Merge "Add the timestamps for each alloc data"
diff --git a/README.md b/README.md
index 85c8190..8d8e583 100644
--- a/README.md
+++ b/README.md
@@ -246,6 +246,7 @@
 
 ### Debugging tips
 1. Key error for a new codename in libc/libc.map.txt
+
 e.g. what you add in libc/libc.map.txt is:
 
 ```
@@ -271,6 +272,7 @@
 Solution: Ask in the team and wait for the update.
 
 2. Use of undeclared identifier of the new system call in the test
+
 Possible Solution: Check everything ready in the files mentioned above first.
 Maybe glibc matters. Follow the example and try #if defined(__GLIBC__).
 
@@ -323,7 +325,7 @@
 
 Note that we use our own custom gtest runner that offers a superset of the
 options documented at
-<https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md#running-test-programs-advanced-options>,
+<https://github.com/google/googletest/blob/main/docs/advanced.md#running-test-programs-advanced-options>,
 in particular for test isolation and parallelism (both on by default).
 
 ### Device tests via CTS
diff --git a/TEST_MAPPING b/TEST_MAPPING
index 18e8bbc..f56e16a 100644
--- a/TEST_MAPPING
+++ b/TEST_MAPPING
@@ -83,5 +83,10 @@
     {
       "name": "toybox-tests"
     }
+  ],
+  "kernel-presubmit": [
+    {
+      "name": "CtsBionicTestCases"
+    }
   ]
 }
diff --git a/benchmarks/Android.bp b/benchmarks/Android.bp
index 5dfc38f..17d2d68 100644
--- a/benchmarks/Android.bp
+++ b/benchmarks/Android.bp
@@ -156,3 +156,23 @@
     ],
     data: ["test_suites/*"],
 }
+
+cc_binary {
+    name: "malloc-rss-benchmark",
+    srcs: [
+        "malloc_rss_benchmark.cpp",
+    ],
+
+    shared_libs: [
+        "libbase",
+    ],
+
+    target: {
+        android: {
+            static_libs: [
+                "libmeminfo",
+                "libprocinfo",
+            ],
+        },
+    },
+}
diff --git a/benchmarks/NOTICE b/benchmarks/NOTICE
index f720e23..e46a624 100644
--- a/benchmarks/NOTICE
+++ b/benchmarks/NOTICE
@@ -178,3 +178,31 @@
 
 -------------------------------------------------------------------
 
+Copyright (C) 2022 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.
+
+-------------------------------------------------------------------
+
diff --git a/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h b/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h
index 2ff3d81..885e47f 100644
--- a/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h
+++ b/benchmarks/linker_relocation/include/linker_reloc_bench_asm.h
@@ -42,6 +42,15 @@
 #define DATA_WORD(val) .quad val
 #define MAIN .globl main; main: mov w0, wzr; ret
 
+#elif defined(__riscv)
+
+// No `lga` in clang unless https://reviews.llvm.org/D107278 lands.
+// `la` is equivalent when using PIC (which we do) though.
+#define GOT_RELOC(sym) la a0, sym
+#define CALL(sym) call sym@plt
+#define DATA_WORD(val) .quad val
+#define MAIN .globl main; main: li a0, 0; ret
+
 #elif defined(__i386__)
 
 #define GOT_RELOC(sym) .long sym@got
diff --git a/benchmarks/malloc_rss_benchmark.cpp b/benchmarks/malloc_rss_benchmark.cpp
new file mode 100644
index 0000000..58f61d9
--- /dev/null
+++ b/benchmarks/malloc_rss_benchmark.cpp
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2022 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 <malloc.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <algorithm>
+#include <chrono>
+#include <iostream>
+#include <memory>
+#include <random>
+#include <thread>
+#include <vector>
+
+#include <android-base/strings.h>
+#if defined(__BIONIC__)
+#include <malloc.h>
+#include <meminfo/procmeminfo.h>
+#include <procinfo/process_map.h>
+#endif
+
+constexpr size_t kMaxThreads = 8;
+// The max number of bytes that can be allocated by a thread. Note that each
+// allocator may have its own limitation on each size allocation. For example,
+// Scudo has a 256 MB limit for each size-class in the primary allocator. The
+// amount of memory allocated should not exceed the limit in each allocator.
+constexpr size_t kMaxBytes = 1 << 24;
+constexpr size_t kMaxLen = kMaxBytes;
+void* MemPool[kMaxThreads][kMaxLen];
+
+void dirtyMem(void* ptr, size_t bytes) {
+  memset(ptr, 1U, bytes);
+}
+
+void ThreadTask(int id, size_t allocSize) {
+  // In the following, we will first allocate blocks with kMaxBytes of memory
+  // and release all of them in random order. In the end, we will do another
+  // round of allocations until it reaches 1/10 kMaxBytes.
+
+  // Total number of blocks
+  const size_t maxCounts = kMaxBytes / allocSize;
+  // The number of blocks in the end
+  const size_t finalCounts = maxCounts / 10;
+
+  for (size_t i = 0; i < maxCounts; ++i) {
+    MemPool[id][i] = malloc(allocSize);
+    if (MemPool[id][i] == 0) {
+      std::cout << "Allocation failure."
+                   "Please consider reducing the number of threads"
+                << std::endl;
+      exit(1);
+    }
+    dirtyMem(MemPool[id][i], allocSize);
+  }
+
+  // Each allocator may apply different strategies to manage the free blocks and
+  // each strategy may have different impacts on future memory usage. For
+  // example, managing free blocks in simple FIFO list may have its memory usage
+  // highly correlated with the blocks releasing pattern. Therefore, release the
+  // blocks in random order to observe the impact of free blocks handling.
+  unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
+  std::shuffle(MemPool[id], MemPool[id] + maxCounts, std::default_random_engine(seed));
+  for (size_t i = 0; i < maxCounts; ++i) {
+    free(MemPool[id][i]);
+    MemPool[id][i] = nullptr;
+  }
+
+  for (size_t i = 0; i < finalCounts; ++i) {
+    MemPool[id][i] = malloc(allocSize);
+    dirtyMem(MemPool[id][i], allocSize);
+  }
+}
+
+void StressSizeClass(size_t numThreads, size_t allocSize) {
+  // We would like to see the minimum memory usage under aggressive page
+  // releasing.
+  mallopt(M_DECAY_TIME, 0);
+
+  std::thread* threads[kMaxThreads];
+  for (size_t i = 0; i < numThreads; ++i) threads[i] = new std::thread(ThreadTask, i, allocSize);
+
+  for (size_t i = 0; i < numThreads; ++i) {
+    threads[i]->join();
+    delete threads[i];
+  }
+
+  // Do an explicit purge to ensure we will be more likely to get the actual
+  // in-use memory.
+  mallopt(M_PURGE, 0);
+
+  android::meminfo::ProcMemInfo proc_mem(getpid());
+  const std::vector<android::meminfo::Vma>& maps = proc_mem.MapsWithoutUsageStats();
+  uint64_t rss_bytes = 0;
+  uint64_t vss_bytes = 0;
+
+  for (auto& vma : maps) {
+    if (vma.name == "[anon:libc_malloc]" || android::base::StartsWith(vma.name, "[anon:scudo:") ||
+        android::base::StartsWith(vma.name, "[anon:GWP-ASan")) {
+      android::meminfo::Vma update_vma(vma);
+      if (!proc_mem.FillInVmaStats(update_vma)) {
+        std::cout << "Failed to parse VMA" << std::endl;
+        exit(1);
+      }
+      rss_bytes += update_vma.usage.rss;
+      vss_bytes += update_vma.usage.vss;
+    }
+  }
+
+  std::cout << "RSS: " << rss_bytes / (1024.0 * 1024.0) << " MB" << std::endl;
+  std::cout << "VSS: " << vss_bytes / (1024.0 * 1024.0) << " MB" << std::endl;
+
+  for (size_t i = 0; i < numThreads; ++i) {
+    for (size_t j = 0; j < kMaxLen; ++j) free(MemPool[i][j]);
+  }
+}
+
+int main(int argc, char* argv[]) {
+  if (argc != 3) {
+    std::cerr << "usage: " << argv[0] << " $NUM_THREADS $ALLOC_SIZE" << std::endl;
+    return 1;
+  }
+
+  size_t numThreads = atoi(argv[1]);
+  size_t allocSize = atoi(argv[2]);
+
+  if (numThreads == 0 || allocSize == 0) {
+    std::cerr << "Please provide valid $NUM_THREADS and $ALLOC_SIZE" << std::endl;
+    return 1;
+  }
+
+  if (numThreads > kMaxThreads) {
+    std::cerr << "The max number of threads is " << kMaxThreads << std::endl;
+    return 1;
+  }
+
+  StressSizeClass(numThreads, allocSize);
+
+  return 0;
+}
diff --git a/docs/status.md b/docs/status.md
index 20a1309..5d2603a 100644
--- a/docs/status.md
+++ b/docs/status.md
@@ -36,13 +36,17 @@
   * `<monetary.h>`. See
     [discussion](https://github.com/android/ndk/issues/1182).
   * `<wordexp.h>`
+  * Locales. Although bionic contains the various `_l()` functions, the only
+    locale supported is a UTF-8 C/POSIX locale. Most of the POSIX APIs are
+    insufficient to support the wide range of languages used by Android users,
+    and apps should use icu4c (or do their i18n work in Java) instead.
+  * Robust mutexes. See
+    [discussion](https://github.com/android/ndk/issues/1181).
   * Thread cancellation (`pthread_cancel`). Unlikely to ever be implemented
     because of the difficulty and cost of implementing it, and the difficulty
     of using it correctly. See
     [This is why we can't have safe cancellation points](https://lwn.net/Articles/683118/)
     for more about thread cancellation.
-  * Robust mutexes. See
-    [discussion](https://github.com/android/ndk/issues/1181).
 
 Run `./libc/tools/check-symbols-glibc.py` in bionic/ for the current
 list of POSIX functions implemented by glibc but not by bionic.
diff --git a/libc/Android.bp b/libc/Android.bp
index 6042929..6442bc9 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -248,6 +248,7 @@
 cc_library_static {
 
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "tzcode/**/*.c",
         "tzcode/bionic.cpp",
@@ -291,6 +292,7 @@
 cc_library_static {
 
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "dns/**/*.c*",
 
@@ -326,6 +328,7 @@
 
 cc_library_static {
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-freebsd/lib/libc/gen/ldexp.c",
         "upstream-freebsd/lib/libc/stdlib/getopt_long.c",
@@ -363,11 +366,6 @@
         "upstream-freebsd/lib/libc/string/wmemset.c",
     ],
     arch: {
-        arm64: {
-            exclude_srcs: [
-                "upstream-freebsd/lib/libc/string/wmemmove.c",
-            ],
-        },
         x86: {
             exclude_srcs: [
                 "upstream-freebsd/lib/libc/string/wcschr.c",
@@ -397,6 +395,7 @@
 
 cc_library_static {
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-freebsd/lib/libc/gen/glob.c",
     ],
@@ -424,6 +423,7 @@
 cc_library_static {
 
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-netbsd/common/lib/libc/stdlib/random.c",
         "upstream-netbsd/lib/libc/gen/nice.c",
@@ -481,6 +481,7 @@
 cc_library_static {
     name: "libc_openbsd_ndk",
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-openbsd/lib/libc/gen/alarm.c",
         "upstream-openbsd/lib/libc/gen/ctype_.c",
@@ -599,6 +600,7 @@
 cc_library_static {
     name: "libc_openbsd_large_stack",
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "stdio/vfprintf.cpp",
         "stdio/vfwprintf.cpp",
@@ -628,6 +630,7 @@
 // automatically included.
 cc_library_static {
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         // These two depend on getentropy, which isn't in libc_ndk.a.
         "upstream-openbsd/lib/libc/crypt/arc4random.c",
@@ -727,6 +730,7 @@
 
 cc_library_static {
     defaults: ["libc_defaults"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-openbsd/android/gdtoa_support.cpp",
         "upstream-openbsd/lib/libc/gdtoa/dmisc.c",
@@ -787,7 +791,6 @@
     arch: {
         arm: {
             cflags: [
-                "-DNO___MEMCPY_CHK",
                 "-DRENAME___STRCAT_CHK",
                 "-DRENAME___STRCPY_CHK",
             ],
@@ -814,9 +817,9 @@
             ],
         },
         arm64: {
-            cflags: ["-DNO___MEMCPY_CHK"],
             srcs: [
-                "arch-arm64/generic/bionic/__memcpy_chk.S",
+                "arch-arm64/string/__memcpy_chk.S",
+                "arch-arm64/string/__memset_chk.S",
             ],
         },
     },
@@ -900,11 +903,6 @@
         },
         arm64: {
             srcs: [
-                "arch-arm64/generic/bionic/memcpy.S",
-                "arch-arm64/generic/bionic/memmove.S",
-                "arch-arm64/generic/bionic/memset.S",
-                "arch-arm64/generic/bionic/wmemmove.S",
-
                 "arch-arm64/bionic/__bionic_clone.S",
                 "arch-arm64/bionic/_exit_with_stack_teardown.S",
                 "arch-arm64/bionic/setjmp.S",
@@ -912,7 +910,6 @@
                 "arch-arm64/bionic/vfork.S",
             ],
             exclude_srcs: [
-                "bionic/__memcpy_chk.cpp",
                 "bionic/strchr.cpp",
                 "bionic/strchrnul.cpp",
                 "bionic/strnlen.c",
@@ -2272,6 +2269,32 @@
 }
 
 // ========================================================
+// libc dependencies for baremetal Rust projects.
+// ========================================================
+
+cc_library_static {
+    name: "librust_baremetal",
+    header_libs: ["libc_headers"],
+    include_dirs: [
+        "bionic/libc/async_safe/include",
+        "bionic/libc/platform",
+    ],
+    cflags: [
+        "-Wall",
+        "-Werror",
+    ],
+    whole_static_libs: [
+        "libarm-optimized-routines-mem",
+    ],
+    system_shared_libs: [],
+    nocrt: true,
+    stl: "none",
+    visibility: [
+        "//packages/modules/Virtualization/vmbase",
+    ],
+}
+
+// ========================================================
 // NDK headers.
 // ========================================================
 
@@ -2793,6 +2816,7 @@
 
 cc_library_host_static {
     name: "libfts",
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "bionic/fts.c",
         "upstream-openbsd/lib/libc/stdlib/recallocarray.c",
@@ -2835,6 +2859,7 @@
 cc_library_host_static {
     name: "libb64",
     visibility: ["//external/musl"],
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: ["upstream-openbsd/lib/libc/net/base64.c"],
     export_include_dirs: ["b64/include"],
     local_include_dirs: [
diff --git a/libc/NOTICE b/libc/NOTICE
index 51f43f1..332885d 100644
--- a/libc/NOTICE
+++ b/libc/NOTICE
@@ -2439,9 +2439,15 @@
 
 -------------------------------------------------------------------
 
+Copyright (c) 1992, 1993, 1994 Henry Spencer.
 Copyright (c) 1992, 1993, 1994
    The Regents of the University of California.  All rights reserved.
 
+Copyright (c) 2011 The FreeBSD Foundation
+All rights reserved.
+Portions of this software were developed by David Chisnall
+under sponsorship from the FreeBSD Foundation.
+
 This code is derived from software contributed to Berkeley by
 Henry Spencer.
 
@@ -2472,6 +2478,8 @@
 -------------------------------------------------------------------
 
 Copyright (c) 1992, 1993, 1994 Henry Spencer.
+Copyright (c) 1992, 1993, 1994
+   The Regents of the University of California.  All rights reserved.
 
 This code is derived from software contributed to Berkeley by
 Henry Spencer.
@@ -2484,11 +2492,7 @@
 2. Redistributions in binary form must reproduce the above copyright
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
-3. All advertising materials mentioning features or use of this software
-   must display the following acknowledgement:
-   This product includes software developed by the University of
-   California, Berkeley and its contributors.
-4. Neither the name of the University nor the names of its contributors
+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.
 
@@ -4298,33 +4302,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2012-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 the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 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
-
--------------------------------------------------------------------
-
 Copyright (c) 2012-2014 ARM Ltd
 All rights reserved.
 
@@ -4426,33 +4403,6 @@
 
 -------------------------------------------------------------------
 
-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 the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 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
-
--------------------------------------------------------------------
-
 Copyright (c) 2014, Intel Corporation
 All rights reserved.
 
@@ -4483,62 +4433,6 @@
 
 -------------------------------------------------------------------
 
-Copyright (c) 2014, 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 the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 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.
-
--------------------------------------------------------------------
-
-Copyright (c) 2015 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.
-
--------------------------------------------------------------------
-
 Copyright (c) 2015 Joerg Sonnenberger <joerg@NetBSD.org>.
 All rights reserved.
 
diff --git a/libc/SECCOMP_ALLOWLIST_APP.TXT b/libc/SECCOMP_ALLOWLIST_APP.TXT
index 39c6c53..7e1ecde 100644
--- a/libc/SECCOMP_ALLOWLIST_APP.TXT
+++ b/libc/SECCOMP_ALLOWLIST_APP.TXT
@@ -59,4 +59,4 @@
 
 # Not used by bionic in U because riscv64 doesn't have it, but still
 # used by legacy apps (http://b/254179267).
-int renameat(int, const char*, int, const char*)  arm,x86,arm64,x86-64
+int renameat(int, const char*, int, const char*)  arm,x86,arm64,x86_64
diff --git a/libc/SECCOMP_ALLOWLIST_COMMON.TXT b/libc/SECCOMP_ALLOWLIST_COMMON.TXT
index a4218ee..efbf28b 100644
--- a/libc/SECCOMP_ALLOWLIST_COMMON.TXT
+++ b/libc/SECCOMP_ALLOWLIST_COMMON.TXT
@@ -3,60 +3,60 @@
 #
 # This file is processed by a python script named genseccomp.py.
 
-# syscalls needed to boot android
-int	pivot_root:pivot_root(const char *new_root, const char *put_old)	lp64
-int	ioprio_get:ioprio_get(int which, int who)	lp64
-int	ioprio_set:ioprio_set(int which, int who, int ioprio)	lp64
-pid_t	gettid:gettid()	all
-int	futex:futex(int *uaddr, int futex_op, int val, const struct timespec *timeout, int *uaddr2, int val3)	all
-int	clone:clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ..) all
-int	sigreturn:sigreturn(unsigned long __unused)	lp32
-int	rt_sigreturn:rt_sigreturn(unsigned long __unused)	all
-int	rt_tgsigqueueinfo:int rt_tgsigqueueinfo(pid_t tgid, pid_t tid, int sig, siginfo_t *uinfo)	all
-int	restart_syscall:int restart_syscall()	all
+# Syscalls needed to boot android
+int	pivot_root(const char*, const char*)	lp64
+int	ioprio_get(int, int)	lp64
+int	ioprio_set(int, int, int)	lp64
 
-# vfork is used by java.lang.ProcessBuilder
-pid_t	vfork:vfork()	arm,x86,x86_64
+# Syscalls used internally by bionic, but not exposed directly.
+pid_t	gettid()	all
+int	futex(int*, int, int, const timespec*, int*, int)	all
+int	clone(int (*)(void*), void*, int, void*, ...) all
+int	sigreturn(unsigned long)	lp32
+int	rt_sigreturn(unsigned long)	all
+int	rt_tgsigqueueinfo(pid_t, pid_t, int, siginfo_t*)	all
+int	restart_syscall()	all
 
-# Needed for performance tools
-int	perf_event_open:perf_event_open(struct perf_event_attr *attr, pid_t pid, int cpu, int group_fd, unsigned long flags)	all
+# vfork is used by bionic (and java.lang.ProcessBuilder) on some
+# architectures. (The others use clone(2) directly instead.)
+pid_t	vfork()	arm,x86,x86_64
 
-# Needed for strace
-int	tkill:tkill(int tid, int sig)	all
+# Needed for performance tools.
+int	perf_event_open(perf_event_attr*, pid_t, int, int, unsigned long)	all
 
-# b/34763393
-int	seccomp:seccomp(unsigned int operation, unsigned int flags, void *args)	all
+# Needed for strace.
+int	tkill(int, int)	all
 
-# Needed by sanitizers (b/34606909, b/136777266).
-int open:open(const char*, int, ...)  arm,x86,x86_64
-int stat64:stat64(const char*, struct stat64*)  arm,x86
-ssize_t readlink:readlink(const char*, char*, size_t)  arm,x86,x86_64
-# Needed by ubsan in T? (http://b/229989971)
-int stat(const char*, struct stat*)  arm,x86,x86_64
+# Needed for a CTS test of seccomp (b/34763393).
+int	seccomp(unsigned, unsigned, void*)	all
+
+# TODO: remove these now we've updated the toolchain (http://b/229989971).
+int open(const char*, int, ...)  arm,x86,x86_64
+int stat64(const char*, stat64*)  arm,x86
+ssize_t readlink(const char*, char*, size_t)  arm,x86,x86_64
+int stat(const char*, stat*)  arm,x86,x86_64
 
 #
-# Useful new syscalls which we don't yet use in bionic.
+# (Potentially) useful new syscalls which we don't yet use in bionic.
 #
 
 # Since Linux 2.5, not in glibc.
-int io_setup(unsigned nr, aio_context_t *ctxp) all
-int io_destroy(aio_context_t ctx) all
-int io_submit(aio_context_t ctx, long nr,  struct iocb **iocbpp) all
-int io_getevents(aio_context_t ctx, long min_nr, long max_nr, struct io_event *events, struct timespec *timeout) all
-int io_cancel(aio_context_t ctx, struct iocb *, struct io_event *result) all
+int io_setup(unsigned, aio_context_t*) all
+int io_destroy(aio_context_t) all
+int io_submit(aio_context_t, long,  iocb**) all
+int io_getevents(aio_context_t, long, long, io_event*, timespec*) all
+int io_cancel(aio_context_t, iocb*, io_event*) all
 # Since Linux 3.14, not in glibc.
-int sched_getattr(pid_t pid, struct sched_attr* attr, unsigned int flags) all
-int sched_setattr(pid_t pid, struct sched_attr* attr, unsigned int size, unsigned int flags) all
+int sched_getattr(pid_t, sched_attr*, unsigned) all
+int sched_setattr(pid_t, sched_attr*, unsigned, unsigned) all
 # Since Linux 3.19, not in glibc (and not really needed to implement fexecve).
-int execveat(int dirfd, const char* pathname, char* const* argv, char* const* envp, int flags)  all
+int execveat(int, const char*, char* const*, char* const*, int)  all
 # Since Linux 4.3, not in glibc. Probed for and conditionally used by ART.
-int membarrier(int cmd, int flags) all
-# Since Linux 4.5, glibc 2.27.
-ssize_t copy_file_range(int fd_in, loff_t* off_in, int fd_out, loff_t* off_out, size_t len, unsigned int flags) all
-# Since Linux 4.6, glibc 2.26.
-ssize_t preadv2(int fd, const struct iovec* iov, int iovcnt, off_t offset, int flags) all
-ssize_t pwritev2(int fd, const struct iovec* iov, int iovcnt, off_t offset, int flags) all
-# Since Linux 5.1, not in glibc.
+int membarrier(int, int) all
+# Since Linux 5.1, not in glibc. Not used by bionic, and not likely ever
+# to be (because the last thing anyone needs is a new 32-bit ABI in the
+# 2020s!) but http://b/138781460 showed cuttlefish needed at least the
+# clock_gettime64 syscall.
 int clock_gettime64(clockid_t, timespec64*) lp32
 int clock_settime64(clockid_t, const timespec64*) lp32
 int clock_adjtime64(clockid_t, timex64*) lp32
@@ -70,7 +70,6 @@
 int pselect6_time64(int, fd_set*, fd_set*, timespec64*, void*) lp32
 int ppoll_time64(pollfd*, unsigned int, timespec64*, const sigset64_t*, size_t) lp32
 int recvmmsg_time64(int, mmsghdr*, unsigned int, int, const timespec64*) lp32
-int semtimedop_time64(int, sembuf*, size_t, const timespec64*) lp32
 int rt_sigtimedwait_time64(const sigset64_t*, siginfo_t*, const timespec64*, size_t) lp32
 int futex_time64(int*, int, int, const timespec64*, int*, int) lp32
 int sched_rr_get_interval_time64(pid_t, timespec64*) lp32
diff --git a/libc/arch-arm64/dynamic_function_dispatch.cpp b/libc/arch-arm64/dynamic_function_dispatch.cpp
index 83e5ca4..bbd4218 100644
--- a/libc/arch-arm64/dynamic_function_dispatch.cpp
+++ b/libc/arch-arm64/dynamic_function_dispatch.cpp
@@ -41,6 +41,24 @@
     }
 }
 
+typedef void* memcpy_func(void*, const void*, size_t);
+DEFINE_IFUNC_FOR(memcpy) {
+    if (arg->_hwcap & HWCAP_ASIMD) {
+        RETURN_FUNC(memcpy_func, __memcpy_aarch64_simd);
+    } else {
+        RETURN_FUNC(memcpy_func, __memcpy_aarch64);
+    }
+}
+
+typedef void* memmove_func(void*, const void*, size_t);
+DEFINE_IFUNC_FOR(memmove) {
+    if (arg->_hwcap & HWCAP_ASIMD) {
+        RETURN_FUNC(memmove_func, __memmove_aarch64_simd);
+    } else {
+        RETURN_FUNC(memmove_func, __memmove_aarch64);
+    }
+}
+
 typedef int stpcpy_func(char*, const char*);
 DEFINE_IFUNC_FOR(stpcpy) {
     if (arg->_hwcap2 & HWCAP2_MTE) {
diff --git a/libc/arch-arm64/generic/bionic/memcpy_base.S b/libc/arch-arm64/generic/bionic/memcpy_base.S
deleted file mode 100644
index f850624..0000000
--- a/libc/arch-arm64/generic/bionic/memcpy_base.S
+++ /dev/null
@@ -1,217 +0,0 @@
-/* Copyright (c) 2012-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 the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 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. */
-
-/*
- * Copyright (c) 2015 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.
- */
-
-/* Assumptions:
- *
- * ARMv8-a, AArch64, unaligned accesses.
- *
- */
-
-#include <private/bionic_asm.h>
-
-#define dstin	x0
-#define src	x1
-#define count	x2
-#define dst	x3
-#define srcend	x4
-#define dstend	x5
-#define A_l	x6
-#define A_lw	w6
-#define A_h	x7
-#define A_hw	w7
-#define B_l	x8
-#define B_lw   w8
-#define B_h	x9
-#define C_l	x10
-#define C_h	x11
-#define D_l	x12
-#define D_h	x13
-#define E_l	src
-#define E_h	count
-#define F_l	srcend
-#define F_h	dst
-#define tmp1	x9
-
-#define L(l) .L ## l
-
-/* Copies are split into 3 main cases: small copies of up to 16 bytes,
-   medium copies of 17..96 bytes which are fully unrolled. Large copies
-   of more than 96 bytes align the destination and use an unrolled loop
-   processing 64 bytes per iteration.
-   Small and medium copies read all data before writing, allowing any
-   kind of overlap, and memmove tailcalls memcpy for these cases as
-   well as non-overlapping copies.
-*/
-
-	prfm    PLDL1KEEP, [src]
-	add	srcend, src, count
-	add	dstend, dstin, count
-        cmp     count, 16
-        b.ls    L(copy16)
-	cmp	count, 96
-	b.hi	L(copy_long)
-
-	/* Medium copies: 17..96 bytes.  */
-	sub	tmp1, count, 1
-	ldp	A_l, A_h, [src]
-	tbnz	tmp1, 6, L(copy96)
-	ldp	D_l, D_h, [srcend, -16]
-	tbz	tmp1, 5, 1f
-	ldp	B_l, B_h, [src, 16]
-	ldp	C_l, C_h, [srcend, -32]
-	stp	B_l, B_h, [dstin, 16]
-	stp	C_l, C_h, [dstend, -32]
-1:
-	stp	A_l, A_h, [dstin]
-	stp	D_l, D_h, [dstend, -16]
-	ret
-
-	.p2align 4
-
-	/* Small copies: 0..16 bytes.  */
-L(copy16):
-	cmp	count, 8
-	b.lo	1f
-	ldr	A_l, [src]
-	ldr	A_h, [srcend, -8]
-	str	A_l, [dstin]
-	str	A_h, [dstend, -8]
-	ret
-	.p2align 4
-1:
-	tbz	count, 2, 1f
-	ldr	A_lw, [src]
-	ldr	A_hw, [srcend, -4]
-	str	A_lw, [dstin]
-	str	A_hw, [dstend, -4]
-	ret
-
-	/* Copy 0..3 bytes.  Use a branchless sequence that copies the same
-	   byte 3 times if count==1, or the 2nd byte twice if count==2.  */
-1:
-	cbz	count, 2f
-	lsr	tmp1, count, 1
-	ldrb	A_lw, [src]
-	ldrb	A_hw, [srcend, -1]
-	ldrb	B_lw, [src, tmp1]
-	strb	A_lw, [dstin]
-	strb	B_lw, [dstin, tmp1]
-	strb	A_hw, [dstend, -1]
-2:	ret
-
-	.p2align 4
-	/* Copy 64..96 bytes.  Copy 64 bytes from the start and
-	   32 bytes from the end.  */
-L(copy96):
-	ldp	B_l, B_h, [src, 16]
-	ldp	C_l, C_h, [src, 32]
-	ldp	D_l, D_h, [src, 48]
-	ldp	E_l, E_h, [srcend, -32]
-	ldp	F_l, F_h, [srcend, -16]
-	stp	A_l, A_h, [dstin]
-	stp	B_l, B_h, [dstin, 16]
-	stp	C_l, C_h, [dstin, 32]
-	stp	D_l, D_h, [dstin, 48]
-	stp	E_l, E_h, [dstend, -32]
-	stp	F_l, F_h, [dstend, -16]
-	ret
-
-	/* Align DST to 16 byte alignment so that we don't cross cache line
-	   boundaries on both loads and stores.	 There are at least 96 bytes
-	   to copy, so copy 16 bytes unaligned and then align.	The loop
-	   copies 64 bytes per iteration and prefetches one iteration ahead.  */
-
-	.p2align 4
-L(copy_long):
-	and	tmp1, dstin, 15
-	bic	dst, dstin, 15
-	ldp	D_l, D_h, [src]
-	sub	src, src, tmp1
-	add	count, count, tmp1	/* Count is now 16 too large.  */
-	ldp	A_l, A_h, [src, 16]
-	stp	D_l, D_h, [dstin]
-	ldp	B_l, B_h, [src, 32]
-	ldp	C_l, C_h, [src, 48]
-	ldp	D_l, D_h, [src, 64]!
-	subs	count, count, 128 + 16	/* Test and readjust count.  */
-	b.ls	2f
-1:
-	stp	A_l, A_h, [dst, 16]
-	ldp	A_l, A_h, [src, 16]
-	stp	B_l, B_h, [dst, 32]
-	ldp	B_l, B_h, [src, 32]
-	stp	C_l, C_h, [dst, 48]
-	ldp	C_l, C_h, [src, 48]
-	stp	D_l, D_h, [dst, 64]!
-	ldp	D_l, D_h, [src, 64]!
-	subs	count, count, 64
-	b.hi	1b
-
-	/* Write the last full set of 64 bytes.	 The remainder is at most 64
-	   bytes, so it is safe to always copy 64 bytes from the end even if
-	   there is just 1 byte left.  */
-2:
-	ldp	E_l, E_h, [srcend, -64]
-	stp	A_l, A_h, [dst, 16]
-	ldp	A_l, A_h, [srcend, -48]
-	stp	B_l, B_h, [dst, 32]
-	ldp	B_l, B_h, [srcend, -32]
-	stp	C_l, C_h, [dst, 48]
-	ldp	C_l, C_h, [srcend, -16]
-	stp	D_l, D_h, [dst, 64]
-	stp	E_l, E_h, [dstend, -64]
-	stp	A_l, A_h, [dstend, -48]
-	stp	B_l, B_h, [dstend, -32]
-	stp	C_l, C_h, [dstend, -16]
-	ret
diff --git a/libc/arch-arm64/generic/bionic/memmove.S b/libc/arch-arm64/generic/bionic/memmove.S
deleted file mode 100644
index 0f752ea..0000000
--- a/libc/arch-arm64/generic/bionic/memmove.S
+++ /dev/null
@@ -1,157 +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 the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 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. */
-
-/*
- * Copyright (c) 2015 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.
- */
-
-/* Assumptions:
- *
- * ARMv8-a, AArch64, unaligned accesses, wchar_t is 4 bytes
- */
-
-#include <private/bionic_asm.h>
-
-/* Parameters and result.  */
-#define dstin	x0
-#define src	x1
-#define count	x2
-#define srcend	x3
-#define dstend	x4
-#define tmp1	x5
-#define A_l	x6
-#define A_h	x7
-#define B_l	x8
-#define B_h	x9
-#define C_l	x10
-#define C_h	x11
-#define D_l	x12
-#define D_h	x13
-#define E_l	count
-#define E_h	tmp1
-
-/* All memmoves up to 96 bytes are done by memcpy as it supports overlaps.
-   Larger backwards copies are also handled by memcpy. The only remaining
-   case is forward large copies.  The destination is aligned, and an
-   unrolled loop processes 64 bytes per iteration.
-*/
-
-#if defined(WMEMMOVE)
-ENTRY(wmemmove)
-	lsl	count, count, #2
-#else
-ENTRY(memmove)
-#endif
-	sub	tmp1, dstin, src
-	cmp	count, 96
-	ccmp	tmp1, count, 2, hi
-	b.hs	__memcpy
-
-	cbz	tmp1, 3f
-	add	dstend, dstin, count
-	add	srcend, src, count
-
-	/* Align dstend to 16 byte alignment so that we don't cross cache line
-	   boundaries on both loads and stores.	 There are at least 96 bytes
-	   to copy, so copy 16 bytes unaligned and then align.	The loop
-	   copies 64 bytes per iteration and prefetches one iteration ahead.  */
-
-	and	tmp1, dstend, 15
-	ldp	D_l, D_h, [srcend, -16]
-	sub	srcend, srcend, tmp1
-	sub	count, count, tmp1
-	ldp	A_l, A_h, [srcend, -16]
-	stp	D_l, D_h, [dstend, -16]
-	ldp	B_l, B_h, [srcend, -32]
-	ldp	C_l, C_h, [srcend, -48]
-	ldp	D_l, D_h, [srcend, -64]!
-	sub	dstend, dstend, tmp1
-	subs	count, count, 128
-	b.ls	2f
-	nop
-1:
-	stp	A_l, A_h, [dstend, -16]
-	ldp	A_l, A_h, [srcend, -16]
-	stp	B_l, B_h, [dstend, -32]
-	ldp	B_l, B_h, [srcend, -32]
-	stp	C_l, C_h, [dstend, -48]
-	ldp	C_l, C_h, [srcend, -48]
-	stp	D_l, D_h, [dstend, -64]!
-	ldp	D_l, D_h, [srcend, -64]!
-	subs	count, count, 64
-	b.hi	1b
-
-	/* Write the last full set of 64 bytes.	 The remainder is at most 64
-	   bytes, so it is safe to always copy 64 bytes from the start even if
-	   there is just 1 byte left.  */
-2:
-	ldp	E_l, E_h, [src, 48]
-	stp	A_l, A_h, [dstend, -16]
-	ldp	A_l, A_h, [src, 32]
-	stp	B_l, B_h, [dstend, -32]
-	ldp	B_l, B_h, [src, 16]
-	stp	C_l, C_h, [dstend, -48]
-	ldp	C_l, C_h, [src]
-	stp	D_l, D_h, [dstend, -64]
-	stp	E_l, E_h, [dstin, 48]
-	stp	A_l, A_h, [dstin, 32]
-	stp	B_l, B_h, [dstin, 16]
-	stp	C_l, C_h, [dstin]
-3:	ret
-
-#if defined(WMEMMOVE)
-END(wmemmove)
-#else
-END(memmove)
-
-ALIAS_SYMBOL(memcpy, memmove)
-#endif
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/generic/bionic/memset.S b/libc/arch-arm64/generic/bionic/memset.S
deleted file mode 100644
index 19d3510..0000000
--- a/libc/arch-arm64/generic/bionic/memset.S
+++ /dev/null
@@ -1,253 +0,0 @@
-/* Copyright (c) 2012-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 the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 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. */
-
-/*
- * Copyright (c) 2015 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.
- */
-
-/* Assumptions:
- *
- * ARMv8-a, AArch64, unaligned accesses
- *
- */
-
-#include <private/bionic_asm.h>
-
-/* By default we assume that the DC instruction can be used to zero
-   data blocks more efficiently.  In some circumstances this might be
-   unsafe, for example in an asymmetric multiprocessor environment with
-   different DC clear lengths (neither the upper nor lower lengths are
-   safe to use).
-
-   If code may be run in a virtualized environment, then define
-   MAYBE_VIRT.  This will cause the code to cache the system register
-   values rather than re-reading them each call.  */
-
-#define dstin		x0
-#define val		x1
-#define valw		w1
-#define count		x2
-#define dst 		x3
-#define dstend		x4
-#define tmp1		x5
-#define tmp1w		w5
-#define tmp2		x6
-#define tmp2w		w6
-#define zva_len		x7
-#define zva_lenw	w7
-
-#define L(l) .L ## l
-
-ENTRY(__memset_chk)
-  cmp count, dst
-  bls memset
-
-  // Preserve for accurate backtrace.
-  stp x29, x30, [sp, -16]!
-  .cfi_def_cfa_offset 16
-  .cfi_rel_offset x29, 0
-  .cfi_rel_offset x30, 8
-
-  bl __memset_chk_fail
-END(__memset_chk)
-
-ENTRY(memset)
-
-	dup	v0.16B, valw
-	add	dstend, dstin, count
-
-	cmp	count, 96
-	b.hi	L(set_long)
-	cmp	count, 16
-	b.hs	L(set_medium)
-	mov	val, v0.D[0]
-
-	/* Set 0..15 bytes.  */
-	tbz	count, 3, 1f
-	str	val, [dstin]
-	str	val, [dstend, -8]
-	ret
-	nop
-1:	tbz	count, 2, 2f
-	str	valw, [dstin]
-	str	valw, [dstend, -4]
-	ret
-2:	cbz	count, 3f
-	strb	valw, [dstin]
-	tbz	count, 1, 3f
-	strh	valw, [dstend, -2]
-3:	ret
-
-	/* Set 17..96 bytes.  */
-L(set_medium):
-	str	q0, [dstin]
-	tbnz	count, 6, L(set96)
-	str	q0, [dstend, -16]
-	tbz	count, 5, 1f
-	str	q0, [dstin, 16]
-	str	q0, [dstend, -32]
-1:	ret
-
-	.p2align 4
-	/* Set 64..96 bytes.  Write 64 bytes from the start and
-	   32 bytes from the end.  */
-L(set96):
-	str	q0, [dstin, 16]
-	stp	q0, q0, [dstin, 32]
-	stp	q0, q0, [dstend, -32]
-	ret
-
-	.p2align 3
-	nop
-L(set_long):
-	and	valw, valw, 255
-	bic	dst, dstin, 15
-	str	q0, [dstin]
-	cmp	count, 256
-	ccmp	valw, 0, 0, cs
-	b.eq	L(try_zva)
-L(no_zva):
-	sub	count, dstend, dst	/* Count is 16 too large.  */
-	add	dst, dst, 16
-	sub	count, count, 64 + 16	/* Adjust count and bias for loop.  */
-1:	stp	q0, q0, [dst], 64
-	stp	q0, q0, [dst, -32]
-L(tail64):
-	subs	count, count, 64
-	b.hi	1b
-2:	stp	q0, q0, [dstend, -64]
-	stp	q0, q0, [dstend, -32]
-	ret
-
-	.p2align 3
-L(try_zva):
-	mrs	tmp1, dczid_el0
-	tbnz	tmp1w, 4, L(no_zva)
-	and	tmp1w, tmp1w, 15
-	cmp	tmp1w, 4	/* ZVA size is 64 bytes.  */
-	b.ne	 L(zva_128)
-
-	/* Write the first and last 64 byte aligned block using stp rather
-	   than using DC ZVA.  This is faster on some cores.
-	 */
-L(zva_64):
-	str	q0, [dst, 16]
-	stp	q0, q0, [dst, 32]
-	bic	dst, dst, 63
-	stp	q0, q0, [dst, 64]
-	stp	q0, q0, [dst, 96]
-	sub	count, dstend, dst	/* Count is now 128 too large.	*/
-	sub	count, count, 128+64+64	/* Adjust count and bias for loop.  */
-	add	dst, dst, 128
-	nop
-1:	dc	zva, dst
-	add	dst, dst, 64
-	subs	count, count, 64
-	b.hi	1b
-	stp	q0, q0, [dst, 0]
-	stp	q0, q0, [dst, 32]
-	stp	q0, q0, [dstend, -64]
-	stp	q0, q0, [dstend, -32]
-	ret
-
-	.p2align 3
-L(zva_128):
-	cmp	tmp1w, 5	/* ZVA size is 128 bytes.  */
-	b.ne	L(zva_other)
-
-	str	q0, [dst, 16]
-	stp	q0, q0, [dst, 32]
-	stp	q0, q0, [dst, 64]
-	stp	q0, q0, [dst, 96]
-	bic	dst, dst, 127
-	sub	count, dstend, dst	/* Count is now 128 too large.	*/
-	sub	count, count, 128+128	/* Adjust count and bias for loop.  */
-	add	dst, dst, 128
-1:	dc	zva, dst
-	add	dst, dst, 128
-	subs	count, count, 128
-	b.hi	1b
-	stp	q0, q0, [dstend, -128]
-	stp	q0, q0, [dstend, -96]
-	stp	q0, q0, [dstend, -64]
-	stp	q0, q0, [dstend, -32]
-	ret
-
-L(zva_other):
-	mov	tmp2w, 4
-	lsl	zva_lenw, tmp2w, tmp1w
-	add	tmp1, zva_len, 64	/* Max alignment bytes written.	 */
-	cmp	count, tmp1
-	blo	L(no_zva)
-
-	sub	tmp2, zva_len, 1
-	add	tmp1, dst, zva_len
-	add	dst, dst, 16
-	subs	count, tmp1, dst	/* Actual alignment bytes to write.  */
-	bic	tmp1, tmp1, tmp2	/* Aligned dc zva start address.  */
-	beq	2f
-1:	stp	q0, q0, [dst], 64
-	stp	q0, q0, [dst, -32]
-	subs	count, count, 64
-	b.hi	1b
-2:	mov	dst, tmp1
-	sub	count, dstend, tmp1	/* Remaining bytes to write.  */
-	subs	count, count, zva_len
-	b.lo	4f
-3:	dc	zva, dst
-	add	dst, dst, zva_len
-	subs	count, count, zva_len
-	b.hs	3b
-4:	add	count, count, zva_len
-	b	L(tail64)
-
-END(memset)
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/generic/bionic/wmemmove.S b/libc/arch-arm64/generic/bionic/wmemmove.S
deleted file mode 100644
index b130530..0000000
--- a/libc/arch-arm64/generic/bionic/wmemmove.S
+++ /dev/null
@@ -1,32 +0,0 @@
-/* Copyright (c) 2014, 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 the Linaro nor the
-         names of its contributors may be used to endorse or promote products
-         derived from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 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.
-*/
-
-#define WMEMMOVE
-#include "memmove.S"
-#undef WMEMMOVE
-
-NOTE_GNU_PROPERTY()
diff --git a/libc/arch-arm64/static_function_dispatch.S b/libc/arch-arm64/static_function_dispatch.S
index 161ece8..d00f071 100644
--- a/libc/arch-arm64/static_function_dispatch.S
+++ b/libc/arch-arm64/static_function_dispatch.S
@@ -34,6 +34,8 @@
 END(name)
 
 FUNCTION_DELEGATE(memchr, __memchr_aarch64_mte)
+FUNCTION_DELEGATE(memcpy, __memcpy_aarch64)
+FUNCTION_DELEGATE(memmove, __memmove_aarch64)
 FUNCTION_DELEGATE(stpcpy, __stpcpy_aarch64_mte)
 FUNCTION_DELEGATE(strchr, __strchr_aarch64_mte)
 FUNCTION_DELEGATE(strchrnul, __strchrnul_aarch64_mte)
diff --git a/libc/arch-arm64/generic/bionic/__memcpy_chk.S b/libc/arch-arm64/string/__memcpy_chk.S
similarity index 100%
rename from libc/arch-arm64/generic/bionic/__memcpy_chk.S
rename to libc/arch-arm64/string/__memcpy_chk.S
diff --git a/libc/arch-arm64/generic/bionic/memcpy.S b/libc/arch-arm64/string/__memset_chk.S
similarity index 78%
rename from libc/arch-arm64/generic/bionic/memcpy.S
rename to libc/arch-arm64/string/__memset_chk.S
index bc1945c..e1e29d0 100644
--- a/libc/arch-arm64/generic/bionic/memcpy.S
+++ b/libc/arch-arm64/string/__memset_chk.S
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 The Android Open Source Project
+ * Copyright (C) 2017 The Android Open Source Project
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -26,12 +26,22 @@
  * SUCH DAMAGE.
  */
 
-// Prototype: void *memcpy (void *dst, const void *src, size_t count).
-
 #include <private/bionic_asm.h>
 
-ENTRY(__memcpy)
-  #include "memcpy_base.S"
-END(__memcpy)
+ENTRY(__memset_chk)
+  cmp x2, x3
+  // Direct b.ls memcpy may not have enough range
+  b.hi .L_memset_chk_fail
+  b memset
+
+.L_memset_chk_fail:
+  // Preserve for accurate backtrace.
+  stp x29, x30, [sp, -16]!
+  .cfi_def_cfa_offset 16
+  .cfi_rel_offset x29, 0
+  .cfi_rel_offset x30, 8
+
+  bl __memset_chk_fail
+END(__memset_chk)
 
 NOTE_GNU_PROPERTY()
diff --git a/libc/bionic/android_unsafe_frame_pointer_chase.cpp b/libc/bionic/android_unsafe_frame_pointer_chase.cpp
index a1cb3c6..1a59718 100644
--- a/libc/bionic/android_unsafe_frame_pointer_chase.cpp
+++ b/libc/bionic/android_unsafe_frame_pointer_chase.cpp
@@ -72,7 +72,13 @@
 
   size_t num_frames = 0;
   while (1) {
+#if defined(__riscv)
+    // Frame addresses seem to have been implemented incorrectly for RISC-V.
+    // See https://reviews.llvm.org/D87579.
+    auto* frame = reinterpret_cast<frame_record*>(begin - 16);
+#else
     auto* frame = reinterpret_cast<frame_record*>(begin);
+#endif
     if (num_frames < num_entries) {
       buf[num_frames] = __bionic_clear_pac_bits(frame->return_addr);
     }
diff --git a/libc/bionic/fcntl.cpp b/libc/bionic/fcntl.cpp
index c508131..754277b 100644
--- a/libc/bionic/fcntl.cpp
+++ b/libc/bionic/fcntl.cpp
@@ -30,21 +30,29 @@
 #include <fcntl.h>
 
 #include "private/bionic_fdtrack.h"
-
-#if defined(__LP64__)
+#include "private/bionic_fortify.h"
 
 extern "C" int __fcntl(int fd, int cmd, ...);
+extern "C" int __fcntl64(int, int, ...);
 
 int fcntl(int fd, int cmd, ...) {
   va_list args;
   va_start(args, cmd);
-
-  // This is a bit sketchy, especially because arg can be an int, but all of our
-  // supported 64-bit ABIs pass arg in a register.
+  // This is a bit sketchy for LP64, especially because arg can be an int,
+  // but all of our supported 64-bit ABIs pass the argument in a register.
   void* arg = va_arg(args, void*);
   va_end(args);
 
+  if (cmd == F_SETFD && (reinterpret_cast<uintptr_t>(arg) & ~FD_CLOEXEC) != 0) {
+    __fortify_fatal("fcntl(F_SETFD) passed non-FD_CLOEXEC flag: %p", arg);
+  }
+
+#if defined(__LP64__)
   int rc = __fcntl(fd, cmd, arg);
+#else
+  // For LP32 we use the fcntl64 system call to signal that we're using struct flock64.
+  int rc = __fcntl64(fd, cmd, arg);
+#endif
   if (cmd == F_DUPFD) {
     return FDTRACK_CREATE_NAME("F_DUPFD", rc);
   } else if (cmd == F_DUPFD_CLOEXEC) {
@@ -52,25 +60,3 @@
   }
   return rc;
 }
-
-#else
-
-extern "C" int __fcntl64(int, int, ...);
-
-// For fcntl we use the fcntl64 system call to signal that we're using struct flock64.
-int fcntl(int fd, int cmd, ...) {
-  va_list ap;
-
-  va_start(ap, cmd);
-  void* arg = va_arg(ap, void*);
-  va_end(ap);
-
-  if (cmd == F_DUPFD) {
-    return FDTRACK_CREATE_NAME("F_DUPFD", __fcntl64(fd, cmd, arg));
-  } else if (cmd == F_DUPFD_CLOEXEC) {
-    return FDTRACK_CREATE_NAME("F_DUPFD_CLOEXEC", __fcntl64(fd, cmd, arg));
-  }
-  return __fcntl64(fd, cmd, arg);
-}
-
-#endif
diff --git a/libc/bionic/fortify.cpp b/libc/bionic/fortify.cpp
index 88ae477..73cf973 100644
--- a/libc/bionic/fortify.cpp
+++ b/libc/bionic/fortify.cpp
@@ -489,14 +489,15 @@
   return strcpy(dst, src);
 }
 
-#if !defined(NO___MEMCPY_CHK)
+#if !defined(__arm__) && !defined(__aarch64__)
 // Runtime implementation of __memcpy_chk (used directly by compiler, not in headers).
+// arm32 and arm64 have assembler implementations, and don't need this C fallback.
 extern "C" void* __memcpy_chk(void* dst, const void* src, size_t count, size_t dst_len) {
   __check_count("memcpy", "count", count);
   __check_buffer_access("memcpy", "write into", count, dst_len);
   return memcpy(dst, src, count);
 }
-#endif // NO___MEMCPY_CHK
+#endif
 
 // Runtime implementation of __mempcpy_chk (used directly by compiler, not in headers).
 extern "C" void* __mempcpy_chk(void* dst, const void* src, size_t count, size_t dst_len) {
diff --git a/libc/bionic/strtol.cpp b/libc/bionic/strtol.cpp
index ec72b09..05b4b53 100644
--- a/libc/bionic/strtol.cpp
+++ b/libc/bionic/strtol.cpp
@@ -208,9 +208,6 @@
   return StrToI<long long, LLONG_MIN, LLONG_MAX, wchar_t>(s, end, base);
 }
 
-// Public API since L, but not in any header.
-__strong_alias(strtoq, strtoll);
-
 unsigned long strtoul(const char* s, char** end, int base) {
   return StrToU<unsigned long, ULONG_MAX, char>(s, end, base);
 }
@@ -234,6 +231,3 @@
 uintmax_t wcstoumax(const wchar_t* s, wchar_t** end, int base) {
   return StrToU<uintmax_t, UINTMAX_MAX, wchar_t>(s, end, base);
 }
-
-// Public API since L, but not in any header.
-__strong_alias(strtouq, strtoull);
diff --git a/libc/include/langinfo.h b/libc/include/langinfo.h
index d9d8c15..2b43892 100644
--- a/libc/include/langinfo.h
+++ b/libc/include/langinfo.h
@@ -92,8 +92,8 @@
 #define NOEXPR 54
 #define CRNCYSTR 55
 
-char* nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
-char* nl_langinfo_l(nl_item __item, locale_t __l) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo(nl_item __item) __INTRODUCED_IN(26);
+char* _Nonnull nl_langinfo_l(nl_item __item, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
 __END_DECLS
 
diff --git a/libc/include/libgen.h b/libc/include/libgen.h
index b910790..474f066 100644
--- a/libc/include/libgen.h
+++ b/libc/include/libgen.h
@@ -50,7 +50,7 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* __posix_basename(const char* __path) __RENAME(basename);
+char* _Nullable __posix_basename(const char* _Nullable __path) __RENAME(basename);
 
 /**
  * This macro ensures that callers get the POSIX basename() if they include this header,
@@ -65,13 +65,13 @@
  * Note that Android's cv-qualifiers differ from POSIX; Android's implementation doesn't
  * modify its input and uses thread-local storage for the result if necessary.
  */
-char* dirname(const char* __path);
+char* _Nullable dirname(const char* _Nullable __path);
 
 #if !defined(__LP64__)
 /** Deprecated. Use dirname() instead. */
-int dirname_r(const char* __path, char* __buf, size_t __n);
+int dirname_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 /** Deprecated. Use basename() instead. */
-int basename_r(const char* __path, char* __buf, size_t __n);
+int basename_r(const char* _Nullable __path, char* _Nullable __buf, size_t __n);
 #endif
 
 __END_DECLS
diff --git a/libc/include/malloc.h b/libc/include/malloc.h
index 40786fa..02bda60 100644
--- a/libc/include/malloc.h
+++ b/libc/include/malloc.h
@@ -40,7 +40,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
+void* _Nullable malloc(size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(1) __wur;
 
 /**
  * [calloc(3)](http://man7.org/linux/man-pages/man3/calloc.3.html) allocates
@@ -49,7 +49,7 @@
  * Returns a pointer to the allocated memory on success and returns a null
  * pointer and sets `errno` on failure.
  */
-void* calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
+void* _Nullable calloc(size_t __item_count, size_t __item_size) __mallocfunc __BIONIC_ALLOC_SIZE(1,2) __wur;
 
 /**
  * [realloc(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -58,7 +58,7 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* realloc(void* __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable realloc(void* _Nullable __ptr, size_t __byte_count) __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [reallocarray(3)](http://man7.org/linux/man-pages/man3/realloc.3.html) resizes
@@ -70,13 +70,13 @@
  * Returns a pointer (which may be different from `__ptr`) to the resized
  * memory on success and returns a null pointer and sets `errno` on failure.
  */
-void* reallocarray(void* __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
+void* _Nullable reallocarray(void* _Nullable __ptr, size_t __item_count, size_t __item_size) __BIONIC_ALLOC_SIZE(2, 3) __wur __INTRODUCED_IN(29);
 
 /**
  * [free(3)](http://man7.org/linux/man-pages/man3/free.3.html) deallocates
  * memory on the heap.
  */
-void free(void* __ptr);
+void free(void* _Nullable __ptr);
 
 /**
  * [memalign(3)](http://man7.org/linux/man-pages/man3/memalign.3.html) allocates
@@ -87,7 +87,7 @@
  *
  * See also posix_memalign().
  */
-void* memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
+void* _Nullable memalign(size_t __alignment, size_t __byte_count) __mallocfunc __BIONIC_ALLOC_SIZE(2) __wur;
 
 /**
  * [malloc_usable_size(3)](http://man7.org/linux/man-pages/man3/malloc_usable_size.3.html)
@@ -95,7 +95,7 @@
  *
  * Available since API level 17.
  */
-size_t malloc_usable_size(const void* __ptr) __INTRODUCED_IN(17);
+size_t malloc_usable_size(const void* _Nullable __ptr) __INTRODUCED_IN(17);
 
 #define __MALLINFO_BODY \
   /** Total number of non-mmapped bytes currently allocated from OS. */ \
@@ -168,7 +168,7 @@
  *
  * Available since API level 23.
  */
-int malloc_info(int __must_be_zero, FILE* __fp) __INTRODUCED_IN(23);
+int malloc_info(int __must_be_zero, FILE* _Nonnull __fp) __INTRODUCED_IN(23);
 
 /**
  * mallopt() option to set the decay time. Valid values are 0 and 1.
@@ -329,7 +329,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __malloc_hook)(size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __malloc_hook)(size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__realloc_hook(3)](http://man7.org/linux/man-pages/man3/__realloc_hook.3.html)
@@ -340,7 +340,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __realloc_hook)(void* __ptr, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __realloc_hook)(void* _Nullable __ptr, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__free_hook(3)](http://man7.org/linux/man-pages/man3/__free_hook.3.html)
@@ -351,7 +351,7 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void (*volatile __free_hook)(void* __ptr, const void* __caller) __INTRODUCED_IN(28);
+extern void (*volatile _Nonnull __free_hook)(void* _Nullable __ptr, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 /**
  * [__memalign_hook(3)](http://man7.org/linux/man-pages/man3/__memalign_hook.3.html)
@@ -362,6 +362,6 @@
  *
  * See also: [extra documentation](https://android.googlesource.com/platform/bionic/+/master/libc/malloc_hooks/README.md)
  */
-extern void* (*volatile __memalign_hook)(size_t __alignment, size_t __byte_count, const void* __caller) __INTRODUCED_IN(28);
+extern void* _Nonnull (*volatile _Nonnull __memalign_hook)(size_t __alignment, size_t __byte_count, const void* _Nonnull __caller) __INTRODUCED_IN(28);
 
 __END_DECLS
diff --git a/libc/include/regex.h b/libc/include/regex.h
index c4cc39c..be1418e 100644
--- a/libc/include/regex.h
+++ b/libc/include/regex.h
@@ -49,8 +49,8 @@
 typedef struct {
 	int re_magic;
 	size_t re_nsub;		/* number of parenthesized subexpressions */
-	const char *re_endp;	/* end pointer for REG_PEND */
-	struct re_guts *re_g;	/* none of your business :-) */
+	const char * _Null_unspecified re_endp;	/* end pointer for REG_PEND */
+	struct re_guts * _Null_unspecified re_g;	/* none of your business :-) */
 } regex_t;
 
 typedef struct {
@@ -67,6 +67,7 @@
 #define	REG_NOSPEC	0020
 #define	REG_PEND	0040
 #define	REG_DUMP	0200
+#define	REG_GNU		0400
 
 /* regerror() flags */
 #define	REG_NOMATCH	 1
@@ -85,6 +86,7 @@
 #define	REG_EMPTY	14
 #define	REG_ASSERT	15
 #define	REG_INVARG	16
+#define	REG_ILLSEQ	17
 #define	REG_ATOI	255	/* convert name to number (!) */
 #define	REG_ITOA	0400	/* convert number to name (!) */
 
@@ -97,10 +99,10 @@
 #define	REG_BACKR	02000	/* force use of backref code */
 
 __BEGIN_DECLS
-int regcomp(regex_t* __re, const char* __regex, int __flags);
-size_t regerror(int __error_code, const regex_t* __re, char* __buf, size_t __n);
-int regexec(const regex_t* __re, const char* __s, size_t __match_count, regmatch_t __matches[], int __flags);
-void regfree(regex_t* __re);
+int regcomp(regex_t* _Nonnull __re, const char* _Nonnull __regex, int __flags);
+size_t regerror(int __error_code, const regex_t* _Nullable __re, char* _Nullable __buf, size_t __n);
+int regexec(const regex_t* _Nonnull __re, const char* _Nonnull __s, size_t __match_count, regmatch_t __matches[_Nullable], int __flags);
+void regfree(regex_t* _Nonnull __re);
 __END_DECLS
 
 #endif
diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h
index 4aa27f9..06ed3f4 100644
--- a/libc/include/stdlib.h
+++ b/libc/include/stdlib.h
@@ -49,82 +49,82 @@
 __noreturn void _Exit(int) __RENAME(_exit);
 #endif
 
-int atexit(void (*__fn)(void));
+int atexit(void (* _Nonnull __fn)(void));
 
-int at_quick_exit(void (*__fn)(void)) __INTRODUCED_IN(21);
+int at_quick_exit(void (* _Nonnull __fn)(void)) __INTRODUCED_IN(21);
 void quick_exit(int __status) __noreturn __INTRODUCED_IN(21);
 
-char* getenv(const char* __name);
-int putenv(char* __assignment);
-int setenv(const char* __name, const char* __value, int __overwrite);
-int unsetenv(const char* __name);
+char* _Nullable getenv(const char* _Nonnull __name);
+int putenv(char* _Nonnull __assignment);
+int setenv(const char* _Nonnull __name, const char* _Nonnull __value, int __overwrite);
+int unsetenv(const char* _Nonnull __name);
 int clearenv(void);
 
-char* mkdtemp(char* __template);
-char* mktemp(char* __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
+char* _Nullable mkdtemp(char* _Nonnull __template);
+char* _Nullable mktemp(char* _Nonnull __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead")));
 
-int mkostemp64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemp(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkostemps64(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkostemps(char* __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
-int mkstemp64(char* __template) __INTRODUCED_IN(21);
-int mkstemp(char* __template);
-int mkstemps64(char* __template, int __flags) __INTRODUCED_IN(23);
-int mkstemps(char* __template, int __flags);
+int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkostemps64(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkostemps(char* _Nonnull __template, int __suffix_length, int __flags) __INTRODUCED_IN(23);
+int mkstemp64(char* _Nonnull __template) __INTRODUCED_IN(21);
+int mkstemp(char* _Nonnull __template);
+int mkstemps64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23);
+int mkstemps(char* _Nonnull __template, int __flags);
 
-long strtol(const char* __s, char** __end_ptr, int __base);
-long long strtoll(const char* __s, char** __end_ptr, int __base);
-unsigned long strtoul(const char* __s, char** __end_ptr, int __base);
-unsigned long long strtoull(const char* __s, char** __end_ptr, int __base);
+long strtol(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+long long strtoll(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long strtoul(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
+unsigned long long strtoull(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base);
 
-int posix_memalign(void** __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
+int posix_memalign(void* _Nullable * _Nullable __memptr, size_t __alignment, size_t __size) __INTRODUCED_IN(17);
 
-void* aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
+void* _Nullable aligned_alloc(size_t __alignment, size_t __size) __INTRODUCED_IN(28);
 
-double strtod(const char* __s, char** __end_ptr);
-long double strtold(const char* __s, char** __end_ptr) __RENAME_LDBL(strtod, 3, 21);
+double strtod(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr);
+long double strtold(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __RENAME_LDBL(strtod, 3, 21);
 
-unsigned long strtoul_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(26);
+unsigned long strtoul_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 
-int atoi(const char* __s) __attribute_pure__;
-long atol(const char* __s) __attribute_pure__;
-long long atoll(const char* __s) __attribute_pure__;
+int atoi(const char* _Nonnull __s) __attribute_pure__;
+long atol(const char* _Nonnull __s) __attribute_pure__;
+long long atoll(const char* _Nonnull __s) __attribute_pure__;
 
-__wur char* realpath(const char* __path, char* __resolved);
-int system(const char* __command);
+__wur char* _Nullable realpath(const char* _Nonnull __path, char* _Nullable __resolved);
+int system(const char* _Nonnull __command);
 
-void* bsearch(const void* __key, const void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void* _Nullable bsearch(const void* _Nonnull __key, const void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
-void qsort(void* __base, size_t __nmemb, size_t __size, int (*__comparator)(const void* __lhs, const void* __rhs));
+void qsort(void* _Nullable __base, size_t __nmemb, size_t __size, int (* _Nonnull __comparator)(const void* _Nonnull __lhs, const void* _Nonnull __rhs));
 
 uint32_t arc4random(void);
 uint32_t arc4random_uniform(uint32_t __upper_bound);
-void arc4random_buf(void* __buf, size_t __n);
+void arc4random_buf(void* _Nonnull __buf, size_t __n);
 
 #define RAND_MAX 0x7fffffff
 
-int rand_r(unsigned int* __seed_ptr) __INTRODUCED_IN(21);
+int rand_r(unsigned int* _Nonnull __seed_ptr) __INTRODUCED_IN(21);
 
 double drand48(void);
-double erand48(unsigned short __xsubi[3]);
-long jrand48(unsigned short __xsubi[3]);
-void lcong48(unsigned short __param[7]) __INTRODUCED_IN(23);
+double erand48(unsigned short __xsubi[_Nonnull 3]);
+long jrand48(unsigned short __xsubi[_Nonnull 3]);
+void lcong48(unsigned short __param[_Nonnull 7]) __INTRODUCED_IN(23);
 long lrand48(void);
 long mrand48(void);
-long nrand48(unsigned short __xsubi[3]);
-unsigned short* seed48(unsigned short __seed16v[3]);
+long nrand48(unsigned short __xsubi[_Nonnull 3]);
+unsigned short* _Nonnull seed48(unsigned short __seed16v[_Nonnull 3]);
 void srand48(long __seed);
 
-char* initstate(unsigned int __seed, char* __state, size_t __n) __INTRODUCED_IN(21);
-char* setstate(char* __state) __INTRODUCED_IN(21);
+char* _Nullable initstate(unsigned int __seed, char* _Nonnull __state, size_t __n) __INTRODUCED_IN(21);
+char* _Nullable setstate(char* _Nonnull __state) __INTRODUCED_IN(21);
 
 int getpt(void);
 int posix_openpt(int __flags) __INTRODUCED_IN(21);
-char* ptsname(int __fd);
-int ptsname_r(int __fd, char* __buf, size_t __n);
+char* _Nullable ptsname(int __fd);
+int ptsname_r(int __fd, char* _Nonnull __buf, size_t __n);
 int unlockpt(int __fd);
 
-int getsubopt(char** __option, char* const* __tokens, char** __value_ptr) __INTRODUCED_IN(26);
+int getsubopt(char* _Nonnull * _Nonnull __option, char* _Nonnull const* _Nonnull __tokens, char* _Nullable * _Nonnull __value_ptr) __INTRODUCED_IN(26);
 
 typedef struct {
   int quot;
@@ -154,18 +154,18 @@
  *
  * Returns the number of samples written to `__averages` (at most 3), and returns -1 on failure.
  */
-int getloadavg(double __averages[], int __n) __INTRODUCED_IN(29);
+int getloadavg(double __averages[_Nonnull], int __n) __INTRODUCED_IN(29);
 
 /* BSD compatibility. */
-const char* getprogname(void) __INTRODUCED_IN(21);
-void setprogname(const char* __name) __INTRODUCED_IN(21);
+const char* _Nullable getprogname(void) __INTRODUCED_IN(21);
+void setprogname(const char* _Nonnull __name) __INTRODUCED_IN(21);
 
-int mblen(const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
-size_t mbstowcs(wchar_t* __dst, const char* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int mbtowc(wchar_t* __wc_ptr, const char* __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
-int wctomb(char* __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mblen(const char* _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(26);
+size_t mbstowcs(wchar_t* _Nullable __dst, const char* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int mbtowc(wchar_t* _Nullable __wc_ptr, const char*  _Nullable __s, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+int wctomb(char* _Nullable __dst, wchar_t __wc) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
-size_t wcstombs(char* __dst, const wchar_t* __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
+size_t wcstombs(char* _Nullable __dst, const wchar_t* _Nullable __src, size_t __n) __INTRODUCED_IN_NO_GUARD_FOR_NDK(21);
 
 #if __ANDROID_API__ >= 21
 size_t __ctype_get_mb_cur_max(void) __INTRODUCED_IN(21);
@@ -192,25 +192,25 @@
 #endif
 
 #if __ANDROID_API__ >= 21
-float strtof(const char* __s, char** __end_ptr) __INTRODUCED_IN(21);
-double atof(const char* __s) __attribute_pure__ __INTRODUCED_IN(21);
+float strtof(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr) __INTRODUCED_IN(21);
+double atof(const char* _Nonnull __s) __attribute_pure__ __INTRODUCED_IN(21);
 int rand(void) __INTRODUCED_IN(21);
 void srand(unsigned int __seed) __INTRODUCED_IN(21);
 long random(void) __INTRODUCED_IN(21);
 void srandom(unsigned int __seed) __INTRODUCED_IN(21);
 int grantpt(int __fd) __INTRODUCED_IN(21);
 
-long long strtoll_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-unsigned long long strtoull_l(const char* __s, char** __end_ptr, int __base, locale_t __l) __INTRODUCED_IN(21);
-long double strtold_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(21);
+long long strtoll_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+unsigned long long strtoull_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int __base, locale_t _Nonnull __l) __INTRODUCED_IN(21);
+long double strtold_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(21);
 #else
 // Implemented as static inlines before 21.
 #endif
 
 #if __ANDROID_API__ >= 26
-double strtod_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-float strtof_l(const char* __s, char** __end_ptr, locale_t __l) __INTRODUCED_IN(26);
-long strtol_l(const char* __s, char** __end_ptr, int, locale_t __l) __INTRODUCED_IN(26);
+double strtod_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+float strtof_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, locale_t _Nonnull __l) __INTRODUCED_IN(26);
+long strtol_l(const char* _Nonnull __s, char* _Nullable * _Nullable __end_ptr, int, locale_t _Nonnull __l) __INTRODUCED_IN(26);
 #else
 // Implemented as static inlines before 26.
 #endif
diff --git a/libc/include/sys/mman.h b/libc/include/sys/mman.h
index 9e865a3..fea9332 100644
--- a/libc/include/sys/mman.h
+++ b/libc/include/sys/mman.h
@@ -110,6 +110,8 @@
  * [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
  * locks pages (preventing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlockall(int __flags) __INTRODUCED_IN(17);
@@ -118,6 +120,8 @@
  * [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
  * unlocks pages (allowing swapping).
  *
+ * Available since API level 17.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int munlockall(void) __INTRODUCED_IN(17);
@@ -134,6 +138,8 @@
  * [mlock2(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
  * locks pages (preventing swapping), with optional flags.
  *
+ * Available since API level 30.
+ *
  * Returns 0 on success, and returns -1 and sets `errno` on failure.
  */
 int mlock2(const void* __addr, size_t __size, int __flags) __INTRODUCED_IN(30);
@@ -167,12 +173,12 @@
  * works just like madvise(2) but applies to the process specified by the given
  * PID file descriptor.
  *
- * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
- *
  * Available since API level 31. Its sibling process_mrelease() does not have a
  * libc wrapper and should be called using syscall() instead. Given the lack of
  * widespread applicability of this system call and the absence of wrappers in
  * other libcs, it was probably a mistake to have added this wrapper to bionic.
+ *
+ * Returns the number of bytes advised on success, and returns -1 and sets `errno` on failure.
  */
 ssize_t process_madvise(int __pid_fd, const struct iovec* __iov, size_t __count, int __advice, unsigned __flags) __INTRODUCED_IN(31);
 
@@ -182,6 +188,8 @@
  * [memfd_create(2)](http://man7.org/linux/man-pages/man2/memfd_create.2.html)
  * creates an anonymous file.
  *
+ * Available since API level 30.
+ *
  * Returns an fd on success, and returns -1 and sets `errno` on failure.
  */
 int memfd_create(const char* __name, unsigned __flags) __INTRODUCED_IN(30);
@@ -216,9 +224,10 @@
  * [posix_madvise(3)](http://man7.org/linux/man-pages/man3/posix_madvise.3.html)
  * gives the kernel advice about future usage patterns.
  *
- * Returns 0 on success, and returns a positive error number on failure.
+ * Available since API level 23.
+ * See also madvise() which is available at all API levels.
  *
- * See also madvise() which has been available much longer.
+ * Returns 0 on success, and returns a positive error number on failure.
  */
 int posix_madvise(void* __addr, size_t __size, int __advice) __INTRODUCED_IN(23);
 
diff --git a/libc/include/sys/resource.h b/libc/include/sys/resource.h
index 9181125..ccb267d 100644
--- a/libc/include/sys/resource.h
+++ b/libc/include/sys/resource.h
@@ -41,6 +41,7 @@
 #define RLIM_SAVED_MAX RLIM_INFINITY
 
 typedef unsigned long rlim_t;
+typedef unsigned long long rlim64_t;
 
 int getrlimit(int __resource, struct rlimit* __limit);
 int setrlimit(int __resource, const struct rlimit* __limit);
diff --git a/libc/include/sys/ucontext.h b/libc/include/sys/ucontext.h
index 72b8adb..8e5873d 100644
--- a/libc/include/sys/ucontext.h
+++ b/libc/include/sys/ucontext.h
@@ -366,7 +366,10 @@
   unsigned long uc_flags;
   struct ucontext_t* uc_link;
   stack_t uc_stack;
-  sigset_t uc_sigmask;
+  union {
+    sigset_t uc_sigmask;
+    sigset64_t uc_sigmask64;
+  };
   /* The kernel adds extra padding here to allow sigset_t to grow. */
   char __padding[128 - sizeof(sigset_t)];
   mcontext_t uc_mcontext;
diff --git a/libc/include/syslog.h b/libc/include/syslog.h
index 45de253..d89d769 100644
--- a/libc/include/syslog.h
+++ b/libc/include/syslog.h
@@ -133,9 +133,10 @@
 
 /**
  * [openlog(3)](http://man7.org/linux/man-pages/man3/openlog.3.html) sets
- * the log tag to `__prefix`. On Android, the other two arguments are ignored.
+ * the log tag to `__prefix`, which can be NULL to return to the default of
+ * getprogname(). On Android, the other two arguments are ignored.
  */
-void openlog(const char* __prefix, int __option, int __facility);
+void openlog(const char* _Nullable __prefix, int __option, int __facility);
 
 /**
  * [setlogmask(3)](http://man7.org/linux/man-pages/man3/setlogmask.3.html)
@@ -149,13 +150,13 @@
  * the printf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void syslog(int __priority, const char* __fmt, ...) __printflike(2, 3);
+void syslog(int __priority, const char* _Nonnull __fmt, ...) __printflike(2, 3);
 
 /**
  * [vsyslog(3)](http://man7.org/linux/man-pages/man3/vsyslog.3.html) formats
  * the vprintf()-like message and logs it with the given priority, unless
  * suppressed by setlogmask(). On Android, the output goes to logcat.
  */
-void vsyslog(int __priority, const char* __fmt, va_list __args) __printflike(2, 0);
+void vsyslog(int __priority, const char* _Nonnull __fmt, va_list __args) __printflike(2, 0);
 
 __END_DECLS
diff --git a/libc/include/time.h b/libc/include/time.h
index 0db14ff..4b005c6 100644
--- a/libc/include/time.h
+++ b/libc/include/time.h
@@ -37,7 +37,7 @@
 
 #define CLOCKS_PER_SEC 1000000
 
-extern char* tzname[];
+extern char* _Nonnull tzname[];
 extern int daylight;
 extern long int timezone;
 
@@ -54,62 +54,64 @@
   int tm_yday;
   int tm_isdst;
   long int tm_gmtoff;
-  const char* tm_zone;
+  const char* _Nullable tm_zone;
 };
 
 #define TM_ZONE tm_zone
 
-time_t time(time_t* __t);
-int nanosleep(const struct timespec* __request, struct timespec* __remainder);
+time_t time(time_t* _Nullable __t);
+int nanosleep(const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
 
-char* asctime(const struct tm* __tm);
-char* asctime_r(const struct tm* __tm, char* __buf);
+char* _Nullable asctime(const struct tm* _Nonnull __tm);
+char* _Nullable asctime_r(const struct tm* _Nonnull __tm, char* _Nonnull __buf);
 
 double difftime(time_t __lhs, time_t __rhs);
-time_t mktime(struct tm* __tm);
+time_t mktime(struct tm* _Nonnull __tm);
 
-struct tm* localtime(const time_t* __t);
-struct tm* localtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable localtime(const time_t* _Nonnull __t);
+struct tm* _Nullable localtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-struct tm* gmtime(const time_t* __t);
-struct tm* gmtime_r(const time_t* __t, struct tm* __tm);
+struct tm* _Nullable gmtime(const time_t* _Nonnull __t);
+struct tm* _Nullable gmtime_r(const time_t* _Nonnull __t, struct tm* _Nonnull __tm);
 
-char* strptime(const char* __s, const char* __fmt, struct tm* __tm) __strftimelike(2);
-char* strptime_l(const char* __s, const char* __fmt, struct tm* __tm, locale_t __l) __strftimelike(2) __INTRODUCED_IN(28);
+char* _Nullable strptime(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm) __strftimelike(2);
+char* _Nullable strptime_l(const char* _Nonnull __s, const char* _Nonnull __fmt, struct tm* _Nonnull __tm, locale_t _Nonnull __l) __strftimelike(2) __INTRODUCED_IN(28);
 
-size_t strftime(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm) __strftimelike(3);
+size_t strftime(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm) __strftimelike(3);
 #if __ANDROID_API__ >= 21
-size_t strftime_l(char* __buf, size_t __n, const char* __fmt, const struct tm* __tm, locale_t __l) __strftimelike(3) __INTRODUCED_IN(21);
+size_t strftime_l(char* _Nonnull __buf, size_t __n, const char* _Nonnull __fmt, const struct tm* _Nullable __tm, locale_t _Nonnull __l) __strftimelike(3) __INTRODUCED_IN(21);
 #else
 // Implemented as static inline before 21.
 #endif
 
-char* ctime(const time_t* __t);
-char* ctime_r(const time_t* __t, char* __buf);
+
+char* _Nullable ctime(const time_t* _Nonnull __t);
+char* _Nullable ctime_r(const time_t* _Nonnull __t, char* _Nonnull __buf);
 
 void tzset(void);
 
 clock_t clock(void);
 
-int clock_getcpuclockid(pid_t __pid, clockid_t* __clock) __INTRODUCED_IN(23);
+int clock_getcpuclockid(pid_t __pid, clockid_t* _Nonnull __clock) __INTRODUCED_IN(23);
 
-int clock_getres(clockid_t __clock, struct timespec* __resolution);
-int clock_gettime(clockid_t __clock, struct timespec* __ts);
-int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* __request, struct timespec* __remainder);
-int clock_settime(clockid_t __clock, const struct timespec* __ts);
 
-int timer_create(clockid_t __clock, struct sigevent* __event, timer_t* __timer_ptr);
-int timer_delete(timer_t __timer);
-int timer_settime(timer_t __timer, int __flags, const struct itimerspec* __new_value, struct itimerspec* __old_value);
-int timer_gettime(timer_t __timer, struct itimerspec* __ts);
-int timer_getoverrun(timer_t __timer);
+int clock_getres(clockid_t __clock, struct timespec* _Nullable __resolution);
+int clock_gettime(clockid_t __clock, struct timespec* _Nonnull __ts);
+int clock_nanosleep(clockid_t __clock, int __flags, const struct timespec* _Nonnull __request, struct timespec* _Nullable __remainder);
+int clock_settime(clockid_t __clock, const struct timespec* _Nonnull __ts);
+
+int timer_create(clockid_t __clock, struct sigevent* _Nullable __event, timer_t _Nonnull * _Nonnull __timer_ptr);
+int timer_delete(timer_t _Nonnull __timer);
+int timer_settime(timer_t _Nonnull __timer, int __flags, const struct itimerspec* _Nonnull __new_value, struct itimerspec* _Nullable __old_value);
+int timer_gettime(timer_t _Nonnull _timer, struct itimerspec* _Nonnull __ts);
+int timer_getoverrun(timer_t _Nonnull __timer);
 
 /* Non-standard extensions that are in the BSDs and glibc. */
-time_t timelocal(struct tm* __tm);
-time_t timegm(struct tm* __tm);
+time_t timelocal(struct tm* _Nonnull __tm);
+time_t timegm(struct tm* _Nonnull __tm);
 
 #define TIME_UTC 1
-int timespec_get(struct timespec* __ts, int __base) __INTRODUCED_IN(29);
+int timespec_get(struct timespec* _Nonnull __ts, int __base) __INTRODUCED_IN(29);
 
 __END_DECLS
 
diff --git a/libc/include/time64.h b/libc/include/time64.h
index 905669d..7d70030 100644
--- a/libc/include/time64.h
+++ b/libc/include/time64.h
@@ -47,17 +47,17 @@
 
 typedef int64_t time64_t;
 
-char* asctime64(const struct tm*);
-char* asctime64_r(const struct tm*, char*);
-char* ctime64(const time64_t*);
-char* ctime64_r(const time64_t*, char*);
-struct tm* gmtime64(const time64_t*);
-struct tm* gmtime64_r(const time64_t*, struct tm*);
-struct tm* localtime64(const time64_t*);
-struct tm* localtime64_r(const time64_t*, struct tm*);
-time64_t mktime64(const struct tm*);
-time64_t timegm64(const struct tm*);
-time64_t timelocal64(const struct tm*);
+char* _Nullable asctime64(const struct tm* _Nonnull);
+char* _Nullable asctime64_r(const struct tm* _Nonnull, char* _Nonnull);
+char* _Nullable ctime64(const time64_t* _Nonnull);
+char* _Nullable ctime64_r(const time64_t* _Nonnull, char* _Nonnull);
+struct tm* _Nullable gmtime64(const time64_t* _Nonnull);
+struct tm* _Nullable gmtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+struct tm* _Nullable localtime64(const time64_t* _Nonnull);
+struct tm* _Nullable localtime64_r(const time64_t* _Nonnull, struct tm* _Nonnull);
+time64_t mktime64(const struct tm* _Nonnull);
+time64_t timegm64(const struct tm* _Nonnull);
+time64_t timelocal64(const struct tm* _Nonnull);
 
 __END_DECLS
 
diff --git a/libc/include/unistd.h b/libc/include/unistd.h
index b5694b8..3efc9a2 100644
--- a/libc/include/unistd.h
+++ b/libc/include/unistd.h
@@ -317,10 +317,10 @@
  * [copy_file_range(2)](https://man7.org/linux/man-pages/man2/copy_file_range.2.html) copies
  * a range of data from one file descriptor to another.
  *
- * Returns the number of bytes copied on success, and returns -1 and sets  errno
- * on failure.
- *
  * Available since API level 34.
+ *
+ * Returns the number of bytes copied on success, and returns -1 and sets
+ * `errno` on failure.
  */
 ssize_t copy_file_range(int __fd_in, off64_t* __off_in, int __fd_out, off64_t* __off_out, size_t __length, unsigned int __flags) __INTRODUCED_IN(34);
 
diff --git a/libc/kernel/tools/defaults.py b/libc/kernel/tools/defaults.py
index abb8f82..d0fe157 100644
--- a/libc/kernel/tools/defaults.py
+++ b/libc/kernel/tools/defaults.py
@@ -94,6 +94,9 @@
     "__kernel_old_timeval": "timeval",
     # Do the same for __kernel_old_itimerval as for timeval.
     "__kernel_old_itimerval": "itimerval",
+    # Replace __packed with __attribute__((__packed__)) to avoid depending
+    # on sys/cdefs.h
+    "__packed": "__attribute__((__packed__))",
     }
 
 
diff --git a/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 95d21aa..af32056 100644
--- a/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -82,4 +82,6 @@
 #define HWCAP2_SME_F32F32 (1 << 29)
 #define HWCAP2_SME_FA64 (1 << 30)
 #define HWCAP2_WFXT (1UL << 31)
+#define HWCAP2_EBF16 (1UL << 32)
+#define HWCAP2_SVE_EBF16 (1UL << 33)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/kvm.h b/libc/kernel/uapi/asm-arm64/asm/kvm.h
index 1f57fca..4f9b347 100644
--- a/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -51,9 +51,9 @@
 #define KVM_ARM_TARGET_GENERIC_V8 5
 #define KVM_ARM_NUM_TARGETS 6
 #define KVM_ARM_DEVICE_TYPE_SHIFT 0
-#define KVM_ARM_DEVICE_TYPE_MASK (0xffff << KVM_ARM_DEVICE_TYPE_SHIFT)
+#define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, KVM_ARM_DEVICE_TYPE_SHIFT)
 #define KVM_ARM_DEVICE_ID_SHIFT 16
-#define KVM_ARM_DEVICE_ID_MASK (0xffff << KVM_ARM_DEVICE_ID_SHIFT)
+#define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, KVM_ARM_DEVICE_ID_SHIFT)
 #define KVM_ARM_DEVICE_VGIC_V2 0
 #define KVM_VGIC_V2_ADDR_TYPE_DIST 0
 #define KVM_VGIC_V2_ADDR_TYPE_CPU 1
diff --git a/libc/kernel/uapi/asm-arm64/asm/perf_regs.h b/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
index 71d496f..e18fd05 100644
--- a/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
+++ b/libc/kernel/uapi/asm-arm64/asm/perf_regs.h
@@ -53,5 +53,8 @@
   PERF_REG_ARM64_SP,
   PERF_REG_ARM64_PC,
   PERF_REG_ARM64_MAX,
+  PERF_REG_ARM64_VG = 46,
+  PERF_REG_ARM64_EXTENDED_MAX
 };
+#define PERF_REG_EXTENDED_MASK (1ULL << PERF_REG_ARM64_VG)
 #endif
diff --git a/libc/kernel/uapi/asm-generic/hugetlb_encode.h b/libc/kernel/uapi/asm-generic/hugetlb_encode.h
index 73d8180..059991c 100644
--- a/libc/kernel/uapi/asm-generic/hugetlb_encode.h
+++ b/libc/kernel/uapi/asm-generic/hugetlb_encode.h
@@ -20,17 +20,17 @@
 #define _ASM_GENERIC_HUGETLB_ENCODE_H_
 #define HUGETLB_FLAG_ENCODE_SHIFT 26
 #define HUGETLB_FLAG_ENCODE_MASK 0x3f
-#define HUGETLB_FLAG_ENCODE_16KB (14 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_64KB (16 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512KB (19 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1MB (20 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2MB (21 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_8MB (23 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16MB (24 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_32MB (25 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_256MB (28 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_512MB (29 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_1GB (30 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_2GB (31 << HUGETLB_FLAG_ENCODE_SHIFT)
-#define HUGETLB_FLAG_ENCODE_16GB (34 << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT)
+#define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT)
 #endif
diff --git a/libc/kernel/uapi/asm-generic/mman-common.h b/libc/kernel/uapi/asm-generic/mman-common.h
index e96f4cc..966d05b 100644
--- a/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/libc/kernel/uapi/asm-generic/mman-common.h
@@ -63,6 +63,7 @@
 #define MADV_POPULATE_READ 22
 #define MADV_POPULATE_WRITE 23
 #define MADV_DONTNEED_LOCKED 24
+#define MADV_COLLAPSE 25
 #define MAP_FILE 0
 #define PKEY_DISABLE_ACCESS 0x1
 #define PKEY_DISABLE_WRITE 0x2
diff --git a/libc/kernel/uapi/asm-generic/termbits-common.h b/libc/kernel/uapi/asm-generic/termbits-common.h
index c67f21d..281eee8 100644
--- a/libc/kernel/uapi/asm-generic/termbits-common.h
+++ b/libc/kernel/uapi/asm-generic/termbits-common.h
@@ -54,6 +54,7 @@
 #define B38400 0x0000000f
 #define EXTA B19200
 #define EXTB B38400
+#define ADDRB 0x20000000
 #define CMSPAR 0x40000000
 #define CRTSCTS 0x80000000
 #define IBSHIFT 16
diff --git a/libc/kernel/uapi/asm-riscv/asm/auxvec.h b/libc/kernel/uapi/asm-riscv/asm/auxvec.h
index b0e22af..c70be17 100644
--- a/libc/kernel/uapi/asm-riscv/asm/auxvec.h
+++ b/libc/kernel/uapi/asm-riscv/asm/auxvec.h
@@ -25,5 +25,7 @@
 #define AT_L1D_CACHEGEOMETRY 43
 #define AT_L2_CACHESIZE 44
 #define AT_L2_CACHEGEOMETRY 45
-#define AT_VECTOR_SIZE_ARCH 7
+#define AT_L3_CACHESIZE 46
+#define AT_L3_CACHEGEOMETRY 47
+#define AT_VECTOR_SIZE_ARCH 9
 #endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/kvm.h b/libc/kernel/uapi/asm-riscv/asm/kvm.h
index 8cb1cee..5dc165b 100644
--- a/libc/kernel/uapi/asm-riscv/asm/kvm.h
+++ b/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -39,6 +39,7 @@
 };
 struct kvm_riscv_config {
   unsigned long isa;
+  unsigned long zicbom_block_size;
 };
 struct kvm_riscv_core {
   struct user_regs_struct regs;
@@ -72,6 +73,11 @@
   KVM_RISCV_ISA_EXT_H,
   KVM_RISCV_ISA_EXT_I,
   KVM_RISCV_ISA_EXT_M,
+  KVM_RISCV_ISA_EXT_SVPBMT,
+  KVM_RISCV_ISA_EXT_SSTC,
+  KVM_RISCV_ISA_EXT_SVINVAL,
+  KVM_RISCV_ISA_EXT_ZIHINTPAUSE,
+  KVM_RISCV_ISA_EXT_ZICBOM,
   KVM_RISCV_ISA_EXT_MAX,
 };
 #define KVM_RISCV_TIMER_STATE_OFF 0
diff --git a/libc/kernel/uapi/asm-x86/asm/bootparam.h b/libc/kernel/uapi/asm-x86/asm/bootparam.h
index ba1143b..ab9d7f3 100644
--- a/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -26,8 +26,11 @@
 #define SETUP_APPLE_PROPERTIES 5
 #define SETUP_JAILHOUSE 6
 #define SETUP_CC_BLOB 7
+#define SETUP_IMA 8
+#define SETUP_RNG_SEED 9
+#define SETUP_ENUM_MAX SETUP_RNG_SEED
 #define SETUP_INDIRECT (1 << 31)
-#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_CC_BLOB)
+#define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT)
 #define RAMDISK_IMAGE_START_MASK 0x07FF
 #define RAMDISK_PROMPT_FLAG 0x8000
 #define RAMDISK_LOAD_FLAG 0x4000
@@ -54,7 +57,7 @@
   __u64 next;
   __u32 type;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct setup_indirect {
   __u32 type;
@@ -148,6 +151,10 @@
     __u32 flags;
   } __attribute__((packed)) v2;
 } __attribute__((packed));
+struct ima_setup_data {
+  __u64 addr;
+  __u64 size;
+} __attribute__((packed));
 struct boot_params {
   struct screen_info screen_info;
   struct apm_bios_info apm_bios_info;
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h
index 9a929ae..f07b00e 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -178,11 +178,11 @@
 struct kvm_msrs {
   __u32 nmsrs;
   __u32 pad;
-  struct kvm_msr_entry entries[0];
+  struct kvm_msr_entry entries[];
 };
 struct kvm_msr_list {
   __u32 nmsrs;
-  __u32 indices[0];
+  __u32 indices[];
 };
 #define KVM_MSR_FILTER_MAX_BITMAP_SIZE 0x600
 struct kvm_msr_filter_range {
@@ -211,7 +211,7 @@
 struct kvm_cpuid {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry entries[0];
+  struct kvm_cpuid_entry entries[];
 };
 struct kvm_cpuid_entry2 {
   __u32 function;
@@ -229,7 +229,7 @@
 struct kvm_cpuid2 {
   __u32 nent;
   __u32 padding;
-  struct kvm_cpuid_entry2 entries[0];
+  struct kvm_cpuid_entry2 entries[];
 };
 struct kvm_pit_channel_state {
   __u32 count;
@@ -265,6 +265,7 @@
   struct kvm_pit_channel_state channels[3];
 };
 #define KVM_PIT_FLAGS_HPET_LEGACY 0x00000001
+#define KVM_PIT_FLAGS_SPEAKER_DATA_ON 0x00000002
 struct kvm_pit_state2 {
   struct kvm_pit_channel_state channels[3];
   __u32 flags;
@@ -279,6 +280,7 @@
 #define KVM_VCPUEVENT_VALID_SHADOW 0x00000004
 #define KVM_VCPUEVENT_VALID_SMM 0x00000008
 #define KVM_VCPUEVENT_VALID_PAYLOAD 0x00000010
+#define KVM_VCPUEVENT_VALID_TRIPLE_FAULT 0x00000020
 #define KVM_X86_SHADOW_INT_MOV_SS 0x01
 #define KVM_X86_SHADOW_INT_STI 0x02
 struct kvm_vcpu_events {
@@ -309,7 +311,10 @@
     __u8 smm_inside_nmi;
     __u8 latched_init;
   } smi;
-  __u8 reserved[27];
+  struct {
+    __u8 pending;
+  } triple_fault;
+  __u8 reserved[26];
   __u8 exception_has_payload;
   __u64 exception_payload;
 };
@@ -322,7 +327,7 @@
 };
 struct kvm_xsave {
   __u32 region[1024];
-  __u32 extra[0];
+  __u32 extra[];
 };
 #define KVM_MAX_XCRS 16
 struct kvm_xcr {
@@ -351,6 +356,7 @@
 #define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
 #define KVM_X86_QUIRK_MISC_ENABLE_NO_MWAIT (1 << 4)
 #define KVM_X86_QUIRK_FIX_HYPERCALL_INSN (1 << 5)
+#define KVM_X86_QUIRK_MWAIT_NEVER_UD_FAULTS (1 << 6)
 #define KVM_STATE_NESTED_FORMAT_VMX 0
 #define KVM_STATE_NESTED_FORMAT_SVM 1
 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
@@ -404,7 +410,7 @@
   __u32 fixed_counter_bitmap;
   __u32 flags;
   __u32 pad[4];
-  __u64 events[0];
+  __u64 events[];
 };
 #define KVM_PMU_EVENT_ALLOW 0
 #define KVM_PMU_EVENT_DENY 1
diff --git a/libc/kernel/uapi/asm-x86/asm/sgx.h b/libc/kernel/uapi/asm-x86/asm/sgx.h
index 1874b78..fdc2700 100644
--- a/libc/kernel/uapi/asm-x86/asm/sgx.h
+++ b/libc/kernel/uapi/asm-x86/asm/sgx.h
@@ -29,6 +29,9 @@
 #define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
 #define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
 #define SGX_IOC_VEPC_REMOVE_ALL _IO(SGX_MAGIC, 0x04)
+#define SGX_IOC_ENCLAVE_RESTRICT_PERMISSIONS _IOWR(SGX_MAGIC, 0x05, struct sgx_enclave_restrict_permissions)
+#define SGX_IOC_ENCLAVE_MODIFY_TYPES _IOWR(SGX_MAGIC, 0x06, struct sgx_enclave_modify_types)
+#define SGX_IOC_ENCLAVE_REMOVE_PAGES _IOWR(SGX_MAGIC, 0x07, struct sgx_enclave_remove_pages)
 struct sgx_enclave_create {
   __u64 src;
 };
@@ -46,6 +49,25 @@
 struct sgx_enclave_provision {
   __u64 fd;
 };
+struct sgx_enclave_restrict_permissions {
+  __u64 offset;
+  __u64 length;
+  __u64 permissions;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_modify_types {
+  __u64 offset;
+  __u64 length;
+  __u64 page_type;
+  __u64 result;
+  __u64 count;
+};
+struct sgx_enclave_remove_pages {
+  __u64 offset;
+  __u64 length;
+  __u64 count;
+};
 struct sgx_enclave_run;
 typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
 struct sgx_enclave_run {
diff --git a/libc/kernel/uapi/asm-x86/asm/vmx.h b/libc/kernel/uapi/asm-x86/asm/vmx.h
index 6c07d4c..fdea539 100644
--- a/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -81,7 +81,8 @@
 #define EXIT_REASON_UMWAIT 67
 #define EXIT_REASON_TPAUSE 68
 #define EXIT_REASON_BUS_LOCK 74
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { 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_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { 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_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }
+#define EXIT_REASON_NOTIFY 75
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { 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_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { 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_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }, { EXIT_REASON_BUS_LOCK, "BUS_LOCK" }, { EXIT_REASON_NOTIFY, "NOTIFY" }
 #define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
diff --git a/libc/kernel/uapi/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index 2d3afda..658eb31 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -453,6 +453,11 @@
 #define AMDGPU_INFO_FW_DMCUB 0x14
 #define AMDGPU_INFO_FW_TOC 0x15
 #define AMDGPU_INFO_FW_CAP 0x16
+#define AMDGPU_INFO_FW_GFX_RLCP 0x17
+#define AMDGPU_INFO_FW_GFX_RLCV 0x18
+#define AMDGPU_INFO_FW_MES_KIQ 0x19
+#define AMDGPU_INFO_FW_MES 0x1a
+#define AMDGPU_INFO_FW_IMU 0x1b
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -650,7 +655,7 @@
   __u32 ib_start_alignment;
   __u32 ib_size_alignment;
   __u32 available_rings;
-  __u32 _pad;
+  __u32 ip_discovery_version;
 };
 struct drm_amdgpu_info_num_handles {
   __u32 uvd_max_handles;
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index f032fa3..8188b8f 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -25,7 +25,17 @@
 #define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
 #define DRM_FORMAT_BIG_ENDIAN (1U << 31)
 #define DRM_FORMAT_INVALID 0
+#define DRM_FORMAT_C1 fourcc_code('C', '1', ' ', ' ')
+#define DRM_FORMAT_C2 fourcc_code('C', '2', ' ', ' ')
+#define DRM_FORMAT_C4 fourcc_code('C', '4', ' ', ' ')
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
+#define DRM_FORMAT_D1 fourcc_code('D', '1', ' ', ' ')
+#define DRM_FORMAT_D2 fourcc_code('D', '2', ' ', ' ')
+#define DRM_FORMAT_D4 fourcc_code('D', '4', ' ', ' ')
+#define DRM_FORMAT_D8 fourcc_code('D', '8', ' ', ' ')
+#define DRM_FORMAT_R1 fourcc_code('R', '1', ' ', ' ')
+#define DRM_FORMAT_R2 fourcc_code('R', '2', ' ', ' ')
+#define DRM_FORMAT_R4 fourcc_code('R', '4', ' ', ' ')
 #define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
 #define DRM_FORMAT_R10 fourcc_code('R', '1', '0', ' ')
 #define DRM_FORMAT_R12 fourcc_code('R', '1', '2', ' ')
@@ -86,7 +96,9 @@
 #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
 #define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
 #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_AVUY8888 fourcc_code('A', 'V', 'U', 'Y')
 #define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V')
+#define DRM_FORMAT_XVUY8888 fourcc_code('X', 'V', 'U', 'Y')
 #define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4')
 #define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0')
 #define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0')
@@ -241,11 +253,13 @@
 #define AMD_FMT_MOD_TILE_VER_GFX9 1
 #define AMD_FMT_MOD_TILE_VER_GFX10 2
 #define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_VER_GFX11 4
 #define AMD_FMT_MOD_TILE_GFX9_64K_S 9
 #define AMD_FMT_MOD_TILE_GFX9_64K_D 10
 #define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
 #define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
 #define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_TILE_GFX11_256K_R_X 31
 #define AMD_FMT_MOD_DCC_BLOCK_64B 0
 #define AMD_FMT_MOD_DCC_BLOCK_128B 1
 #define AMD_FMT_MOD_DCC_BLOCK_256B 2
diff --git a/libc/kernel/uapi/drm/i915_drm.h b/libc/kernel/uapi/drm/i915_drm.h
index 1c79905..198b969 100644
--- a/libc/kernel/uapi/drm/i915_drm.h
+++ b/libc/kernel/uapi/drm/i915_drm.h
@@ -368,10 +368,11 @@
 #define I915_PARAM_PERF_REVISION 54
 #define I915_PARAM_HAS_EXEC_TIMELINE_FENCES 55
 #define I915_PARAM_HAS_USERPTR_PROBE 56
-typedef struct drm_i915_getparam {
+struct drm_i915_getparam {
   __s32 param;
   int __user * value;
-} drm_i915_getparam_t;
+};
+typedef struct drm_i915_getparam drm_i915_getparam_t;
 #define I915_SETPARAM_USE_MI_BATCHBUFFER_START 1
 #define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
 #define I915_SETPARAM_ALLOW_BATCHBUFFER 3
@@ -526,13 +527,13 @@
 };
 struct drm_i915_gem_exec_fence {
   __u32 handle;
+  __u32 flags;
 #define I915_EXEC_FENCE_WAIT (1 << 0)
 #define I915_EXEC_FENCE_SIGNAL (1 << 1)
 #define __I915_EXEC_FENCE_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_SIGNAL << 1))
-  __u32 flags;
 };
-#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
 struct drm_i915_gem_execbuffer_ext_timeline_fences {
+#define DRM_I915_GEM_EXECBUFFER_EXT_TIMELINE_FENCES 0
   struct i915_user_extension base;
   __u64 fence_count;
   __u64 handles_ptr;
@@ -547,6 +548,7 @@
   __u32 DR4;
   __u32 num_cliprects;
   __u64 cliprects_ptr;
+  __u64 flags;
 #define I915_EXEC_RING_MASK (0x3f)
 #define I915_EXEC_DEFAULT (0 << 0)
 #define I915_EXEC_RENDER (1 << 0)
@@ -557,10 +559,6 @@
 #define I915_EXEC_CONSTANTS_REL_GENERAL (0 << 6)
 #define I915_EXEC_CONSTANTS_ABSOLUTE (1 << 6)
 #define I915_EXEC_CONSTANTS_REL_SURFACE (2 << 6)
-  __u64 flags;
-  __u64 rsvd1;
-  __u64 rsvd2;
-};
 #define I915_EXEC_GEN7_SOL_RESET (1 << 8)
 #define I915_EXEC_SECURE (1 << 9)
 #define I915_EXEC_IS_PINNED (1 << 10)
@@ -579,6 +577,9 @@
 #define I915_EXEC_FENCE_SUBMIT (1 << 20)
 #define I915_EXEC_USE_EXTENSIONS (1 << 21)
 #define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_USE_EXTENSIONS << 1))
+  __u64 rsvd1;
+  __u64 rsvd2;
+};
 #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)
@@ -722,6 +723,8 @@
 #define I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE (1u << 1)
 #define I915_CONTEXT_CREATE_FLAGS_UNKNOWN (- (I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE << 1))
   __u64 extensions;
+#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
+#define I915_CONTEXT_CREATE_EXT_CLONE 1
 };
 struct drm_i915_gem_context_param {
   __u32 ctx_id;
@@ -761,7 +764,7 @@
   __u16 num_siblings;
   __u32 flags;
   __u64 mbz64;
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_LOAD_BALANCE(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 num_siblings; __u32 flags; __u64 mbz64; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -772,7 +775,7 @@
   __u16 num_bonds;
   __u64 flags;
   __u64 mbz64[4];
-  struct i915_engine_class_instance engines[0];
+  struct i915_engine_class_instance engines[];
 } __attribute__((packed));
 #define I915_DEFINE_CONTEXT_ENGINES_BOND(name__,N__) struct { struct i915_user_extension base; struct i915_engine_class_instance master; __u16 virtual_index; __u16 num_bonds; __u64 flags; __u64 mbz64[4]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
@@ -784,8 +787,8 @@
   __u16 mbz16;
   __u64 flags;
   __u64 mbz64[3];
-  struct i915_engine_class_instance engines[0];
-} __packed;
+  struct i915_engine_class_instance engines[];
+} __attribute__((__packed__));
 #define I915_DEFINE_CONTEXT_ENGINES_PARALLEL_SUBMIT(name__,N__) struct { struct i915_user_extension base; __u16 engine_index; __u16 width; __u16 num_siblings; __u16 mbz16; __u64 flags; __u64 mbz64[3]; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct i915_context_param_engines {
@@ -798,11 +801,9 @@
 #define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__,N__) struct { __u64 extensions; struct i915_engine_class_instance engines[N__]; \
 } __attribute__((packed)) name__
 struct drm_i915_gem_context_create_ext_setparam {
-#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
   struct i915_user_extension base;
   struct drm_i915_gem_context_param param;
 };
-#define I915_CONTEXT_CREATE_EXT_CLONE 1
 struct drm_i915_gem_context_destroy {
   __u32 ctx_id;
   __u32 pad;
@@ -959,7 +960,13 @@
   __u32 rsvd0;
   __u64 probed_size;
   __u64 unallocated_size;
-  __u64 rsvd1[8];
+  union {
+    __u64 rsvd1[8];
+    struct {
+      __u64 probed_cpu_visible_size;
+      __u64 unallocated_cpu_visible_size;
+    };
+  };
 };
 struct drm_i915_query_memory_regions {
   __u32 num_regions;
@@ -969,6 +976,7 @@
 struct drm_i915_gem_create_ext {
   __u64 size;
   __u32 handle;
+#define I915_GEM_CREATE_EXT_FLAG_NEEDS_CPU_ACCESS (1 << 0)
   __u32 flags;
 #define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
 #define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
diff --git a/libc/kernel/uapi/drm/panfrost_drm.h b/libc/kernel/uapi/drm/panfrost_drm.h
index 1f4473d..04a85df 100644
--- a/libc/kernel/uapi/drm/panfrost_drm.h
+++ b/libc/kernel/uapi/drm/panfrost_drm.h
@@ -136,6 +136,38 @@
   __u32 madv;
   __u32 retained;
 };
+#define PANFROSTDUMP_MAJOR 1
+#define PANFROSTDUMP_MINOR 0
+#define PANFROSTDUMP_MAGIC 0x464E4150
+#define PANFROSTDUMP_BUF_REG 0
+#define PANFROSTDUMP_BUF_BOMAP (PANFROSTDUMP_BUF_REG + 1)
+#define PANFROSTDUMP_BUF_BO (PANFROSTDUMP_BUF_BOMAP + 1)
+#define PANFROSTDUMP_BUF_TRAILER (PANFROSTDUMP_BUF_BO + 1)
+struct panfrost_dump_object_header {
+  __u32 magic;
+  __u32 type;
+  __u32 file_size;
+  __u32 file_offset;
+  union {
+    struct {
+      __u64 jc;
+      __u32 gpu_id;
+      __u32 major;
+      __u32 minor;
+      __u64 nbos;
+    } reghdr;
+    struct {
+      __u32 valid;
+      __u64 iova;
+      __u32 data[2];
+    } bomap;
+    __u32 sizer[496];
+  };
+};
+struct panfrost_dump_registers {
+  __u32 reg;
+  __u32 value;
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/linux/android/binder.h b/libc/kernel/uapi/linux/android/binder.h
index 2745972..52f4c6b 100644
--- a/libc/kernel/uapi/linux/android/binder.h
+++ b/libc/kernel/uapi/linux/android/binder.h
@@ -152,6 +152,7 @@
   TF_STATUS_CODE = 0x08,
   TF_ACCEPT_FDS = 0x10,
   TF_CLEAR_BUF = 0x20,
+  TF_UPDATE_TXN = 0x40,
 };
 struct binder_transaction_data {
   union {
@@ -188,7 +189,7 @@
 struct binder_handle_cookie {
   __u32 handle;
   binder_uintptr_t cookie;
-} __packed;
+} __attribute__((__packed__));
 struct binder_pri_desc {
   __s32 priority;
   __u32 desc;
diff --git a/libc/kernel/uapi/linux/ashmem.h b/libc/kernel/uapi/linux/ashmem.h
index 174667f..88f0e81 100644
--- a/libc/kernel/uapi/linux/ashmem.h
+++ b/libc/kernel/uapi/linux/ashmem.h
@@ -41,4 +41,5 @@
 #define ASHMEM_UNPIN _IOW(__ASHMEMIOC, 8, struct ashmem_pin)
 #define ASHMEM_GET_PIN_STATUS _IO(__ASHMEMIOC, 9)
 #define ASHMEM_PURGE_ALL_CACHES _IO(__ASHMEMIOC, 10)
+#define ASHMEM_GET_FILE_ID _IOR(__ASHMEMIOC, 11, unsigned long)
 #endif
diff --git a/libc/kernel/uapi/linux/atm_zatm.h b/libc/kernel/uapi/linux/atm_zatm.h
new file mode 100644
index 0000000..1649b85
--- /dev/null
+++ b/libc/kernel/uapi/linux/atm_zatm.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 LINUX_ATM_ZATM_H
+#define LINUX_ATM_ZATM_H
+#include <linux/atmapi.h>
+#include <linux/atmioc.h>
+#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 {
+  int ref_count;
+  int low_water, high_water;
+  int rqa_count, rqu_count;
+  int offset, next_off;
+  int next_cnt, next_thres;
+};
+struct zatm_pool_req {
+  int pool_num;
+  struct zatm_pool_info info;
+};
+#define ZATM_OAM_POOL 0
+#define ZATM_AAL0_POOL 1
+#define ZATM_AAL5_POOL_BASE 2
+#define ZATM_LAST_POOL ZATM_AAL5_POOL_BASE + 10
+#define ZATM_TIMER_HISTORY_SIZE 16
+#endif
diff --git a/libc/kernel/uapi/linux/audit.h b/libc/kernel/uapi/linux/audit.h
index 2c37e2a..f7c969b 100644
--- a/libc/kernel/uapi/linux/audit.h
+++ b/libc/kernel/uapi/linux/audit.h
@@ -140,7 +140,7 @@
 #define AUDIT_MAX_KEY_LEN 256
 #define AUDIT_BITMASK_SIZE 64
 #define AUDIT_WORD(nr) ((__u32) ((nr) / 32))
-#define AUDIT_BIT(nr) (1 << ((nr) - AUDIT_WORD(nr) * 32))
+#define AUDIT_BIT(nr) (1U << ((nr) - AUDIT_WORD(nr) * 32))
 #define AUDIT_SYSCALL_CLASSES 16
 #define AUDIT_CLASS_DIR_WRITE 0
 #define AUDIT_CLASS_DIR_WRITE_32 1
diff --git a/libc/kernel/uapi/linux/blkzoned.h b/libc/kernel/uapi/linux/blkzoned.h
index b551e8b..e41ac9f 100644
--- a/libc/kernel/uapi/linux/blkzoned.h
+++ b/libc/kernel/uapi/linux/blkzoned.h
@@ -54,7 +54,7 @@
   __u64 sector;
   __u32 nr_zones;
   __u32 flags;
-  struct blk_zone zones[0];
+  struct blk_zone zones[];
 };
 struct blk_zone_range {
   __u64 sector;
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index dd10b34..807884a 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -74,10 +74,27 @@
   __u64 cgroup_inode_id;
   __u32 attach_type;
 };
+enum bpf_cgroup_iter_order {
+  BPF_CGROUP_ITER_ORDER_UNSPEC = 0,
+  BPF_CGROUP_ITER_SELF_ONLY,
+  BPF_CGROUP_ITER_DESCENDANTS_PRE,
+  BPF_CGROUP_ITER_DESCENDANTS_POST,
+  BPF_CGROUP_ITER_ANCESTORS_UP,
+};
 union bpf_iter_link_info {
   struct {
     __u32 map_fd;
   } map;
+  struct {
+    enum bpf_cgroup_iter_order order;
+    __u32 cgroup_fd;
+    __u64 cgroup_id;
+  } cgroup;
+  struct {
+    __u32 tid;
+    __u32 pid;
+    __u32 pid_fd;
+  } task;
 };
 enum bpf_cmd {
   BPF_MAP_CREATE,
@@ -150,6 +167,7 @@
   BPF_MAP_TYPE_INODE_STORAGE,
   BPF_MAP_TYPE_TASK_STORAGE,
   BPF_MAP_TYPE_BLOOM_FILTER,
+  BPF_MAP_TYPE_USER_RINGBUF,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -229,6 +247,7 @@
   BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
   BPF_PERF_EVENT,
   BPF_TRACE_KPROBE_MULTI,
+  BPF_LSM_CGROUP,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -423,6 +442,7 @@
     __u32 attach_flags;
     __aligned_u64 prog_ids;
     __u32 prog_cnt;
+    __aligned_u64 prog_attach_flags;
   } query;
   struct {
     __u64 name;
@@ -498,7 +518,7 @@
     __u32 flags;
   } prog_bind_map;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data), FN(tcp_raw_gen_syncookie_ipv4), FN(tcp_raw_gen_syncookie_ipv6), FN(tcp_raw_check_syncookie_ipv4), FN(tcp_raw_check_syncookie_ipv6), FN(ktime_get_tai_ns), FN(user_ringbuf_drain),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -535,6 +555,9 @@
   BPF_F_SEQ_NUMBER = (1ULL << 3),
 };
 enum {
+  BPF_F_TUNINFO_FLAGS = (1ULL << 4),
+};
+enum {
   BPF_F_INDEX_MASK = 0xffffffffULL,
   BPF_F_CURRENT_CPU = BPF_F_INDEX_MASK,
   BPF_F_CTXLEN_MASK = (0xfffffULL << 32),
@@ -662,7 +685,10 @@
   };
   __u8 tunnel_tos;
   __u8 tunnel_ttl;
-  __u16 tunnel_ext;
+  union {
+    __u16 tunnel_ext;
+    __be16 tunnel_flags;
+  };
   __u32 tunnel_label;
   union {
     __u32 local_ipv4;
@@ -684,6 +710,7 @@
   BPF_DROP = 2,
   BPF_REDIRECT = 7,
   BPF_LWT_REROUTE = 128,
+  BPF_FLOW_DISSECTOR_CONTINUE = 129,
 };
 struct bpf_sock {
   __u32 bound_dev_if;
@@ -846,6 +873,8 @@
   __u64 run_cnt;
   __u64 recursion_misses;
   __u32 verified_insns;
+  __u32 attach_btf_obj_id;
+  __u32 attach_btf_id;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -899,6 +928,16 @@
           __u32 map_id;
         } map;
       };
+      union {
+        struct {
+          __u64 cgroup_id;
+          __u32 order;
+        } cgroup;
+        struct {
+          __u32 tid;
+          __u32 pid;
+        } task;
+      };
     } iter;
     struct {
       __u32 netns_ino;
@@ -1223,6 +1262,7 @@
   BPF_CORE_TYPE_SIZE = 9,
   BPF_CORE_ENUMVAL_EXISTS = 10,
   BPF_CORE_ENUMVAL_VALUE = 11,
+  BPF_CORE_TYPE_MATCHES = 12,
 };
 struct bpf_core_relo {
   __u32 insn_off;
diff --git a/libc/kernel/uapi/linux/btf.h b/libc/kernel/uapi/linux/btf.h
index fc57d3c..a1f68bf 100644
--- a/libc/kernel/uapi/linux/btf.h
+++ b/libc/kernel/uapi/linux/btf.h
@@ -65,6 +65,7 @@
   BTF_KIND_FLOAT = 16,
   BTF_KIND_DECL_TAG = 17,
   BTF_KIND_TYPE_TAG = 18,
+  BTF_KIND_ENUM64 = 19,
   NR_BTF_KINDS,
   BTF_KIND_MAX = NR_BTF_KINDS - 1,
 };
@@ -115,4 +116,9 @@
 struct btf_decl_tag {
   __s32 component_idx;
 };
+struct btf_enum64 {
+  __u32 name_off;
+  __u32 val_lo32;
+  __u32 val_hi32;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 9f76d52..506238f 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -59,7 +59,7 @@
   __u64 num_ref_copies;
   __u64 num_excl_copies;
   struct btrfs_qgroup_limit lim;
-  __u64 qgroups[0];
+  __u64 qgroups[];
 };
 struct btrfs_ioctl_qgroup_limit_args {
   __u64 qgroupid;
@@ -176,6 +176,7 @@
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE (1ULL << 0)
 #define BTRFS_FEATURE_COMPAT_RO_FREE_SPACE_TREE_VALID (1ULL << 1)
 #define BTRFS_FEATURE_COMPAT_RO_VERITY (1ULL << 2)
+#define BTRFS_FEATURE_COMPAT_RO_BLOCK_GROUP_TREE (1ULL << 3)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_BACKREF (1ULL << 0)
 #define BTRFS_FEATURE_INCOMPAT_DEFAULT_SUBVOL (1ULL << 1)
 #define BTRFS_FEATURE_INCOMPAT_MIXED_GROUPS (1ULL << 2)
@@ -304,7 +305,7 @@
 struct btrfs_ioctl_search_args_v2 {
   struct btrfs_ioctl_search_key key;
   __u64 buf_size;
-  __u64 buf[0];
+  __u64 buf[];
 };
 struct btrfs_ioctl_clone_range_args {
   __s64 src_fd;
@@ -335,7 +336,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct btrfs_ioctl_same_extent_info info[0];
+  struct btrfs_ioctl_same_extent_info info[];
 };
 struct btrfs_ioctl_space_info {
   __u64 flags;
@@ -345,14 +346,14 @@
 struct btrfs_ioctl_space_args {
   __u64 space_slots;
   __u64 total_spaces;
-  struct btrfs_ioctl_space_info spaces[0];
+  struct btrfs_ioctl_space_info spaces[];
 };
 struct btrfs_data_container {
   __u32 bytes_left;
   __u32 bytes_missing;
   __u32 elem_cnt;
   __u32 elem_missed;
-  __u64 val[0];
+  __u64 val[];
 };
 struct btrfs_ioctl_ino_path_args {
   __u64 inum;
@@ -422,7 +423,8 @@
 #define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
 #define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
 #define BTRFS_SEND_FLAG_VERSION 0x8
-#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+#define BTRFS_SEND_FLAG_COMPRESSED 0x10
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION | BTRFS_SEND_FLAG_COMPRESSED)
 struct btrfs_ioctl_send_args {
   __s64 send_fd;
   __u64 clone_sources_count;
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index 02a9ae4..6cd46dd 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -221,7 +221,7 @@
   __le64 parent_objectid;
   __le64 index;
   __le16 name_len;
-  __u8 name[0];
+  __u8 name[];
 } __attribute__((__packed__));
 struct btrfs_timespec {
   __le64 sec;
@@ -394,6 +394,7 @@
 #define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
 #define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
 #define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
+#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
 #define BTRFS_QGROUP_STATUS_VERSION 1
 struct btrfs_qgroup_status_item {
   __le64 version;
diff --git a/libc/kernel/uapi/linux/can.h b/libc/kernel/uapi/linux/can.h
index 30eeca2..1365dba 100644
--- a/libc/kernel/uapi/linux/can.h
+++ b/libc/kernel/uapi/linux/can.h
@@ -20,21 +20,29 @@
 #define _UAPI_CAN_H
 #include <linux/types.h>
 #include <linux/socket.h>
+#include <linux/stddef.h>
 #define CAN_EFF_FLAG 0x80000000U
 #define CAN_RTR_FLAG 0x40000000U
 #define CAN_ERR_FLAG 0x20000000U
 #define CAN_SFF_MASK 0x000007FFU
 #define CAN_EFF_MASK 0x1FFFFFFFU
 #define CAN_ERR_MASK 0x1FFFFFFFU
+#define CANXL_PRIO_MASK CAN_SFF_MASK
 typedef __u32 canid_t;
 #define CAN_SFF_ID_BITS 11
 #define CAN_EFF_ID_BITS 29
+#define CANXL_PRIO_BITS CAN_SFF_ID_BITS
 typedef __u32 can_err_mask_t;
 #define CAN_MAX_DLC 8
 #define CAN_MAX_RAW_DLC 15
 #define CAN_MAX_DLEN 8
 #define CANFD_MAX_DLC 15
 #define CANFD_MAX_DLEN 64
+#define CANXL_MIN_DLC 0
+#define CANXL_MAX_DLC 2047
+#define CANXL_MAX_DLC_MASK 0x07FF
+#define CANXL_MIN_DLEN 1
+#define CANXL_MAX_DLEN 2048
 struct can_frame {
   canid_t can_id;
   union {
@@ -57,8 +65,22 @@
   __u8 __res1;
   __u8 data[CANFD_MAX_DLEN] __attribute__((aligned(8)));
 };
+#define CANXL_XLF 0x80
+#define CANXL_SEC 0x01
+struct canxl_frame {
+  canid_t prio;
+  __u8 flags;
+  __u8 sdt;
+  __u16 len;
+  __u32 af;
+  __u8 data[CANXL_MAX_DLEN];
+};
 #define CAN_MTU (sizeof(struct can_frame))
 #define CANFD_MTU (sizeof(struct canfd_frame))
+#define CANXL_MTU (sizeof(struct canxl_frame))
+#define CANXL_HDR_SIZE (offsetof(struct canxl_frame, data))
+#define CANXL_MIN_MTU (CANXL_HDR_SIZE + 64)
+#define CANXL_MAX_MTU CANXL_MTU
 #define CAN_RAW 1
 #define CAN_BCM 2
 #define CAN_TP16 3
diff --git a/libc/kernel/uapi/linux/can/bcm.h b/libc/kernel/uapi/linux/can/bcm.h
index 42e0782..f5ab2c2 100644
--- a/libc/kernel/uapi/linux/can/bcm.h
+++ b/libc/kernel/uapi/linux/can/bcm.h
@@ -31,7 +31,7 @@
   struct bcm_timeval ival1, ival2;
   canid_t can_id;
   __u32 nframes;
-  struct can_frame frames[0];
+  struct can_frame frames[];
 };
 enum {
   TX_SETUP = 1,
diff --git a/libc/kernel/uapi/linux/can/error.h b/libc/kernel/uapi/linux/can/error.h
index 645373b..f585d2c 100644
--- a/libc/kernel/uapi/linux/can/error.h
+++ b/libc/kernel/uapi/linux/can/error.h
@@ -28,6 +28,7 @@
 #define CAN_ERR_BUSOFF 0x00000040U
 #define CAN_ERR_BUSERROR 0x00000080U
 #define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_CNT 0x00000200U
 #define CAN_ERR_LOSTARB_UNSPEC 0x00
 #define CAN_ERR_CRTL_UNSPEC 0x00
 #define CAN_ERR_CRTL_RX_OVERFLOW 0x01
@@ -76,4 +77,7 @@
 #define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
 #define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
 #define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#define CAN_ERROR_WARNING_THRESHOLD 96
+#define CAN_ERROR_PASSIVE_THRESHOLD 128
+#define CAN_BUS_OFF_THRESHOLD 256
 #endif
diff --git a/libc/kernel/uapi/linux/can/raw.h b/libc/kernel/uapi/linux/can/raw.h
index a3bddb7..f8de179 100644
--- a/libc/kernel/uapi/linux/can/raw.h
+++ b/libc/kernel/uapi/linux/can/raw.h
@@ -30,5 +30,6 @@
   CAN_RAW_RECV_OWN_MSGS,
   CAN_RAW_FD_FRAMES,
   CAN_RAW_JOIN_FILTERS,
+  CAN_RAW_XL_FRAMES,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/capability.h b/libc/kernel/uapi/linux/capability.h
index 958e6ab..c1b5dbf 100644
--- a/libc/kernel/uapi/linux/capability.h
+++ b/libc/kernel/uapi/linux/capability.h
@@ -111,5 +111,5 @@
 #define CAP_LAST_CAP CAP_CHECKPOINT_RESTORE
 #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))
+#define CAP_TO_MASK(x) (1U << ((x) & 31))
 #endif
diff --git a/libc/kernel/uapi/linux/cec.h b/libc/kernel/uapi/linux/cec.h
index b90dc49..3953fe3 100644
--- a/libc/kernel/uapi/linux/cec.h
+++ b/libc/kernel/uapi/linux/cec.h
@@ -340,6 +340,7 @@
 #define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_RATE 0x08
 #define CEC_OP_FEAT_DEV_SINK_HAS_ARC_TX 0x04
 #define CEC_OP_FEAT_DEV_SOURCE_HAS_ARC_RX 0x02
+#define CEC_OP_FEAT_DEV_HAS_SET_AUDIO_VOLUME_LEVEL 0x01
 #define CEC_MSG_GIVE_FEATURES 0xa5
 #define CEC_MSG_DECK_CONTROL 0x42
 #define CEC_OP_DECK_CTL_MODE_SKIP_FWD 1
@@ -554,6 +555,7 @@
 #define CEC_MSG_SYSTEM_AUDIO_MODE_STATUS 0x7e
 #define CEC_OP_AUD_FMT_ID_CEA861 0
 #define CEC_OP_AUD_FMT_ID_CEA861_CXT 1
+#define CEC_MSG_SET_AUDIO_VOLUME_LEVEL 0x73
 #define CEC_MSG_SET_AUDIO_RATE 0x9a
 #define CEC_OP_AUD_RATE_OFF 0
 #define CEC_OP_AUD_RATE_WIDE_STD 1
diff --git a/libc/kernel/uapi/linux/connector.h b/libc/kernel/uapi/linux/connector.h
index adf3a7f..e3891e3 100644
--- a/libc/kernel/uapi/linux/connector.h
+++ b/libc/kernel/uapi/linux/connector.h
@@ -50,6 +50,6 @@
   __u32 ack;
   __u16 len;
   __u16 flags;
-  __u8 data[0];
+  __u8 data[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/counter.h b/libc/kernel/uapi/linux/counter.h
index 4b86b28..f986365 100644
--- a/libc/kernel/uapi/linux/counter.h
+++ b/libc/kernel/uapi/linux/counter.h
@@ -46,6 +46,7 @@
   COUNTER_EVENT_THRESHOLD,
   COUNTER_EVENT_INDEX,
   COUNTER_EVENT_CHANGE_OF_STATE,
+  COUNTER_EVENT_CAPTURE,
 };
 struct counter_watch {
   struct counter_component component;
@@ -91,4 +92,8 @@
   COUNTER_SYNAPSE_ACTION_FALLING_EDGE,
   COUNTER_SYNAPSE_ACTION_BOTH_EDGES,
 };
+enum counter_signal_polarity {
+  COUNTER_SIGNAL_POLARITY_POSITIVE,
+  COUNTER_SIGNAL_POLARITY_NEGATIVE,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/cycx_cfm.h b/libc/kernel/uapi/linux/cycx_cfm.h
index 052de53..230b58d 100644
--- a/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/libc/kernel/uapi/linux/cycx_cfm.h
@@ -53,7 +53,7 @@
   unsigned short reserved[6];
   char descr[CFM_DESCR_LEN];
   struct cycx_fw_info info;
-  unsigned char image[0];
+  unsigned char image[];
 };
 struct cycx_fw_header {
   unsigned long reset_size;
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index b45865e..b2cdafa 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -107,6 +107,8 @@
   DEVLINK_CMD_LINECARD_SET,
   DEVLINK_CMD_LINECARD_NEW,
   DEVLINK_CMD_LINECARD_DEL,
+  DEVLINK_CMD_SELFTESTS_GET,
+  DEVLINK_CMD_SELFTESTS_RUN,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -188,6 +190,25 @@
 #define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
 #define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
 #define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_attr_selftest_id {
+  DEVLINK_ATTR_SELFTEST_ID_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_ID_FLASH,
+  __DEVLINK_ATTR_SELFTEST_ID_MAX,
+  DEVLINK_ATTR_SELFTEST_ID_MAX = __DEVLINK_ATTR_SELFTEST_ID_MAX - 1
+};
+enum devlink_selftest_status {
+  DEVLINK_SELFTEST_STATUS_SKIP,
+  DEVLINK_SELFTEST_STATUS_PASS,
+  DEVLINK_SELFTEST_STATUS_FAIL
+};
+enum devlink_attr_selftest_result {
+  DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_RESULT,
+  DEVLINK_ATTR_SELFTEST_RESULT_ID,
+  DEVLINK_ATTR_SELFTEST_RESULT_STATUS,
+  __DEVLINK_ATTR_SELFTEST_RESULT_MAX,
+  DEVLINK_ATTR_SELFTEST_RESULT_MAX = __DEVLINK_ATTR_SELFTEST_RESULT_MAX - 1
+};
 enum devlink_trap_action {
   DEVLINK_TRAP_ACTION_DROP,
   DEVLINK_TRAP_ACTION_TRAP,
@@ -403,6 +424,8 @@
   DEVLINK_ATTR_LINECARD_STATE,
   DEVLINK_ATTR_LINECARD_TYPE,
   DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES,
+  DEVLINK_ATTR_NESTED_DEVLINK,
+  DEVLINK_ATTR_SELFTESTS,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/dlm.h b/libc/kernel/uapi/linux/dlm.h
index c75918f..499baad 100644
--- a/libc/kernel/uapi/linux/dlm.h
+++ b/libc/kernel/uapi/linux/dlm.h
@@ -31,6 +31,5 @@
   char * sb_lvbptr;
 };
 #define DLM_LSFL_TIMEWARN 0x00000002
-#define DLM_LSFL_FS 0x00000004
 #define DLM_LSFL_NEWEXCL 0x00000008
 #endif
diff --git a/libc/kernel/uapi/linux/dm-ioctl.h b/libc/kernel/uapi/linux/dm-ioctl.h
index 98cbc1f..f0ff78c 100644
--- a/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/libc/kernel/uapi/linux/dm-ioctl.h
@@ -48,23 +48,23 @@
 struct dm_target_deps {
   __u32 count;
   __u32 padding;
-  __u64 dev[0];
+  __u64 dev[];
 };
 struct dm_name_list {
   __u64 dev;
   __u32 next;
-  char name[0];
+  char name[];
 };
 #define DM_NAME_LIST_FLAG_HAS_UUID 1
 #define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
 struct dm_target_versions {
   __u32 next;
   __u32 version[3];
-  char name[0];
+  char name[];
 };
 struct dm_target_msg {
   __u64 sector;
-  char message[0];
+  char message[];
 };
 enum {
   DM_VERSION_CMD = 0,
@@ -106,9 +106,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 46
+#define DM_VERSION_MINOR 47
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2022-02-22)"
+#define DM_VERSION_EXTRA "-ioctl(2022-07-28)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/libc/kernel/uapi/linux/dm-log-userspace.h b/libc/kernel/uapi/linux/dm-log-userspace.h
index 4f0671b..37feee6 100644
--- a/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -49,6 +49,6 @@
   __u32 seq;
   __u32 request_type;
   __u32 data_size;
-  char data[0];
+  char data[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/dma-buf.h b/libc/kernel/uapi/linux/dma-buf.h
index 4e31379..7462c15 100644
--- a/libc/kernel/uapi/linux/dma-buf.h
+++ b/libc/kernel/uapi/linux/dma-buf.h
@@ -29,9 +29,19 @@
 #define DMA_BUF_SYNC_END (1 << 2)
 #define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
 #define DMA_BUF_NAME_LEN 32
+struct dma_buf_export_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
+struct dma_buf_import_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
 #define DMA_BUF_BASE 'b'
 #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
 #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
 #define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
 #define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file)
+#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file)
 #endif
diff --git a/libc/kernel/uapi/linux/dn.h b/libc/kernel/uapi/linux/dn.h
deleted file mode 100644
index 621f60f..0000000
--- a/libc/kernel/uapi/linux/dn.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   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 _LINUX_DN_H
-#define _LINUX_DN_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-#include <linux/if_ether.h>
-#define DNPROTO_NSP 2
-#define DNPROTO_ROU 3
-#define DNPROTO_NML 4
-#define DNPROTO_EVL 5
-#define DNPROTO_EVR 6
-#define DNPROTO_NSPT 7
-#define DN_ADDL 2
-#define DN_MAXADDL 2
-#define DN_MAXOPTL 16
-#define DN_MAXOBJL 16
-#define DN_MAXACCL 40
-#define DN_MAXALIASL 128
-#define DN_MAXNODEL 256
-#define DNBUFSIZE 65023
-#define SO_CONDATA 1
-#define SO_CONACCESS 2
-#define SO_PROXYUSR 3
-#define SO_LINKINFO 7
-#define DSO_CONDATA 1
-#define DSO_DISDATA 10
-#define DSO_CONACCESS 2
-#define DSO_ACCEPTMODE 4
-#define DSO_CONACCEPT 5
-#define DSO_CONREJECT 6
-#define DSO_LINKINFO 7
-#define DSO_STREAM 8
-#define DSO_SEQPACKET 9
-#define DSO_MAXWINDOW 11
-#define DSO_NODELAY 12
-#define DSO_CORK 13
-#define DSO_SERVICES 14
-#define DSO_INFO 15
-#define DSO_MAX 15
-#define LL_INACTIVE 0
-#define LL_CONNECTING 1
-#define LL_RUNNING 2
-#define LL_DISCONNECTING 3
-#define ACC_IMMED 0
-#define ACC_DEFER 1
-#define SDF_WILD 1
-#define SDF_PROXY 2
-#define SDF_UICPROXY 4
-struct dn_naddr {
-  __le16 a_len;
-  __u8 a_addr[DN_MAXADDL];
-};
-struct sockaddr_dn {
-  __u16 sdn_family;
-  __u8 sdn_flags;
-  __u8 sdn_objnum;
-  __le16 sdn_objnamel;
-  __u8 sdn_objname[DN_MAXOBJL];
-  struct dn_naddr sdn_add;
-};
-#define sdn_nodeaddrl sdn_add.a_len
-#define sdn_nodeaddr sdn_add.a_addr
-struct optdata_dn {
-  __le16 opt_status;
-#define opt_sts opt_status
-  __le16 opt_optl;
-  __u8 opt_data[16];
-};
-struct accessdata_dn {
-  __u8 acc_accl;
-  __u8 acc_acc[DN_MAXACCL];
-  __u8 acc_passl;
-  __u8 acc_pass[DN_MAXACCL];
-  __u8 acc_userl;
-  __u8 acc_user[DN_MAXACCL];
-};
-struct linkinfo_dn {
-  __u16 idn_segsize;
-  __u8 idn_linkstate;
-};
-union etheraddress {
-  __u8 dne_addr[ETH_ALEN];
-  struct {
-    __u8 dne_hiord[4];
-    __u8 dne_nodeaddr[2];
-  } dne_remote;
-};
-struct dn_addr {
-  __le16 dna_family;
-  union etheraddress dna_netaddr;
-};
-#define DECNET_IOCTL_BASE 0x89
-#define SIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, struct dn_naddr)
-#define SIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, struct dn_naddr)
-#define OSIOCSNETADDR _IOW(DECNET_IOCTL_BASE, 0xe0, int)
-#define OSIOCGNETADDR _IOR(DECNET_IOCTL_BASE, 0xe1, int)
-#endif
diff --git a/libc/kernel/uapi/linux/dns_resolver.h b/libc/kernel/uapi/linux/dns_resolver.h
index 21cb5c0..e7113d0 100644
--- a/libc/kernel/uapi/linux/dns_resolver.h
+++ b/libc/kernel/uapi/linux/dns_resolver.h
@@ -55,13 +55,13 @@
   __u8 zero;
   __u8 content;
   __u8 version;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_header {
   struct dns_payload_header hdr;
   __u8 source;
   __u8 status;
   __u8 nr_servers;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_server {
   __u16 name_len;
   __u16 priority;
@@ -71,8 +71,8 @@
   __u8 status;
   __u8 protocol;
   __u8 nr_addrs;
-} __packed;
+} __attribute__((__packed__));
 struct dns_server_list_v1_address {
   __u8 address_type;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/linux/dw100.h b/libc/kernel/uapi/linux/dw100.h
new file mode 100644
index 0000000..13d8487
--- /dev/null
+++ b/libc/kernel/uapi/linux/dw100.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_DW100_H__
+#define __UAPI_DW100_H__
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP (V4L2_CID_USER_DW100_BASE + 1)
+#endif
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 35486fb..28c8426 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -352,6 +352,7 @@
 #define NT_S390_GS_CB 0x30b
 #define NT_S390_GS_BC 0x30c
 #define NT_S390_RI_CB 0x30d
+#define NT_S390_PV_CPU_DATA 0x30e
 #define NT_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index c096f7f..8bdd622 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -98,7 +98,7 @@
   __u32 id;
   __u32 type_id;
   __u32 len;
-  void * data[0];
+  void * data[];
 };
 #define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
 #define DOWNSHIFT_DEV_DISABLE 0
@@ -118,14 +118,14 @@
   __u32 cmd;
   __u32 version;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eeprom {
   __u32 cmd;
   __u32 magic;
   __u32 offset;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eee {
   __u32 cmd;
@@ -277,17 +277,31 @@
   ETHTOOL_MODULE_POWER_MODE_LOW = 1,
   ETHTOOL_MODULE_POWER_MODE_HIGH,
 };
+enum ethtool_podl_pse_admin_state {
+  ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLED,
+  ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLED,
+};
+enum ethtool_podl_pse_pw_d_status {
+  ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWN = 1,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE,
+  ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR,
+};
 struct ethtool_gstrings {
   __u32 cmd;
   __u32 string_set;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_sset_info {
   __u32 cmd;
   __u32 reserved;
   __u64 sset_mask;
-  __u32 data[0];
+  __u32 data[];
 };
 enum ethtool_test_flags {
   ETH_TEST_FL_OFFLINE = (1 << 0),
@@ -300,17 +314,17 @@
   __u32 flags;
   __u32 reserved;
   __u32 len;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_stats {
   __u32 cmd;
   __u32 n_stats;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_perm_addr {
   __u32 cmd;
   __u32 size;
-  __u8 data[0];
+  __u8 data[];
 };
 enum ethtool_flags {
   ETH_FLAG_TXVLAN = (1 << 7),
@@ -410,7 +424,7 @@
 struct ethtool_rxfh_indir {
   __u32 cmd;
   __u32 size;
-  __u32 ring_index[0];
+  __u32 ring_index[];
 };
 struct ethtool_rxfh {
   __u32 cmd;
@@ -420,7 +434,7 @@
   __u8 hfunc;
   __u8 rsvd8[3];
   __u32 rsvd32;
-  __u32 rss_config[0];
+  __u32 rss_config[];
 };
 #define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
 #define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -462,7 +476,7 @@
   __u32 version;
   __u32 flag;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 #define ETH_FW_DUMP_DISABLE 0
 struct ethtool_get_features_block {
@@ -474,7 +488,7 @@
 struct ethtool_gfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_get_features_block features[0];
+  struct ethtool_get_features_block features[];
 };
 struct ethtool_set_features_block {
   __u32 valid;
@@ -483,7 +497,7 @@
 struct ethtool_sfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_set_features_block features[0];
+  struct ethtool_set_features_block features[];
 };
 struct ethtool_ts_info {
   __u32 cmd;
@@ -800,6 +814,10 @@
 #define MASTER_SLAVE_STATE_MASTER 2
 #define MASTER_SLAVE_STATE_SLAVE 3
 #define MASTER_SLAVE_STATE_ERR 4
+#define RATE_MATCH_NONE 0
+#define RATE_MATCH_PAUSE 1
+#define RATE_MATCH_CRS 2
+#define RATE_MATCH_OPEN_LOOP 3
 #define PORT_TP 0x00
 #define PORT_AUI 0x01
 #define PORT_MII 0x02
@@ -901,8 +919,8 @@
   __u8 transceiver;
   __u8 master_slave_cfg;
   __u8 master_slave_state;
-  __u8 reserved1[1];
+  __u8 rate_matching;
   __u32 reserved[7];
-  __u32 link_mode_masks[0];
+  __u32 link_mode_masks[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/ethtool_netlink.h b/libc/kernel/uapi/linux/ethtool_netlink.h
index 85ce51b..08c6936 100644
--- a/libc/kernel/uapi/linux/ethtool_netlink.h
+++ b/libc/kernel/uapi/linux/ethtool_netlink.h
@@ -56,6 +56,8 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET,
   ETHTOOL_MSG_MODULE_GET,
   ETHTOOL_MSG_MODULE_SET,
+  ETHTOOL_MSG_PSE_GET,
+  ETHTOOL_MSG_PSE_SET,
   __ETHTOOL_MSG_USER_CNT,
   ETHTOOL_MSG_USER_MAX = __ETHTOOL_MSG_USER_CNT - 1
 };
@@ -97,6 +99,7 @@
   ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY,
   ETHTOOL_MSG_MODULE_GET_REPLY,
   ETHTOOL_MSG_MODULE_NTF,
+  ETHTOOL_MSG_PSE_GET_REPLY,
   __ETHTOOL_MSG_KERNEL_CNT,
   ETHTOOL_MSG_KERNEL_MAX = __ETHTOOL_MSG_KERNEL_CNT - 1
 };
@@ -193,6 +196,7 @@
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG,
   ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE,
   ETHTOOL_A_LINKMODES_LANES,
+  ETHTOOL_A_LINKMODES_RATE_MATCHING,
   __ETHTOOL_A_LINKMODES_CNT,
   ETHTOOL_A_LINKMODES_MAX = __ETHTOOL_A_LINKMODES_CNT - 1
 };
@@ -609,6 +613,15 @@
   __ETHTOOL_A_MODULE_CNT,
   ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
 };
+enum {
+  ETHTOOL_A_PSE_UNSPEC,
+  ETHTOOL_A_PSE_HEADER,
+  ETHTOOL_A_PODL_PSE_ADMIN_STATE,
+  ETHTOOL_A_PODL_PSE_ADMIN_CONTROL,
+  ETHTOOL_A_PODL_PSE_PW_D_STATUS,
+  __ETHTOOL_A_PSE_CNT,
+  ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
+};
 #define ETHTOOL_GENL_NAME "ethtool"
 #define ETHTOOL_GENL_VERSION 1
 #define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
diff --git a/libc/kernel/uapi/linux/f2fs.h b/libc/kernel/uapi/linux/f2fs.h
index 76da8f6..3fcd444 100644
--- a/libc/kernel/uapi/linux/f2fs.h
+++ b/libc/kernel/uapi/linux/f2fs.h
@@ -25,7 +25,7 @@
 #define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
 #define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
 #define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
-#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
 #define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
 #define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
 #define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index f4e2a2e..9815a64 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -68,9 +68,11 @@
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
 #define FAN_MARK_FLUSH 0x00000080
 #define FAN_MARK_EVICTABLE 0x00000200
+#define FAN_MARK_IGNORE 0x00000400
 #define FAN_MARK_INODE 0x00000000
 #define FAN_MARK_MOUNT 0x00000010
 #define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
 #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_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
 #define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
@@ -100,7 +102,7 @@
 struct fanotify_event_info_fid {
   struct fanotify_event_info_header hdr;
   __kernel_fsid_t fsid;
-  unsigned char handle[0];
+  unsigned char handle[];
 };
 struct fanotify_event_info_pidfd {
   struct fanotify_event_info_header hdr;
diff --git a/libc/kernel/uapi/linux/fiemap.h b/libc/kernel/uapi/linux/fiemap.h
index 4310786..a67a5fe 100644
--- a/libc/kernel/uapi/linux/fiemap.h
+++ b/libc/kernel/uapi/linux/fiemap.h
@@ -34,7 +34,7 @@
   __u32 fm_mapped_extents;
   __u32 fm_extent_count;
   __u32 fm_reserved;
-  struct fiemap_extent fm_extents[0];
+  struct fiemap_extent fm_extents[];
 };
 #define FIEMAP_MAX_OFFSET (~0ULL)
 #define FIEMAP_FLAG_SYNC 0x00000001
diff --git a/libc/kernel/uapi/linux/firewire-cdev.h b/libc/kernel/uapi/linux/firewire-cdev.h
index 92957bc..a54191c 100644
--- a/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/libc/kernel/uapi/linux/firewire-cdev.h
@@ -50,7 +50,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request {
   __u64 closure;
@@ -59,7 +59,7 @@
   __u64 offset;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request2 {
   __u64 closure;
@@ -72,14 +72,14 @@
   __u32 generation;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_iso_interrupt {
   __u64 closure;
   __u32 type;
   __u32 cycle;
   __u32 header_length;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_event_iso_interrupt_mc {
   __u64 closure;
@@ -98,7 +98,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 union fw_cdev_event {
   struct fw_cdev_event_common common;
@@ -207,7 +207,7 @@
 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
 struct fw_cdev_iso_packet {
   __u32 control;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_queue_iso {
   __u64 packets;
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index 3bb4183..96f9181 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -63,7 +63,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct file_dedupe_range_info info[0];
+  struct file_dedupe_range_info info[];
 };
 struct files_stat_struct {
   unsigned long nr_files;
diff --git a/libc/kernel/uapi/linux/fscrypt.h b/libc/kernel/uapi/linux/fscrypt.h
index ca42eb3..e6b5358 100644
--- a/libc/kernel/uapi/linux/fscrypt.h
+++ b/libc/kernel/uapi/linux/fscrypt.h
@@ -33,6 +33,7 @@
 #define FSCRYPT_MODE_AES_128_CBC 5
 #define FSCRYPT_MODE_AES_128_CTS 6
 #define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_MODE_AES_256_HCTR2 10
 #define FSCRYPT_POLICY_V1 0
 #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
 struct fscrypt_policy_v1 {
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index 144e960..ae667eb 100644
--- a/libc/kernel/uapi/linux/fuse.h
+++ b/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 36
+#define FUSE_KERNEL_MINOR_VERSION 37
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -187,6 +187,7 @@
   FUSE_SETUPMAPPING = 48,
   FUSE_REMOVEMAPPING = 49,
   FUSE_SYNCFS = 50,
+  FUSE_TMPFILE = 51,
   FUSE_CANONICAL_PATH = 2016,
   CUSE_INIT = 4096,
   CUSE_INIT_BSWAP_RESERVED = 1048576,
diff --git a/libc/kernel/uapi/linux/genetlink.h b/libc/kernel/uapi/linux/genetlink.h
index 2e2137d..0f86331 100644
--- a/libc/kernel/uapi/linux/genetlink.h
+++ b/libc/kernel/uapi/linux/genetlink.h
@@ -81,6 +81,7 @@
   CTRL_ATTR_MCAST_GRP_ID,
   __CTRL_ATTR_MCAST_GRP_MAX,
 };
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 enum {
   CTRL_ATTR_POLICY_UNSPEC,
   CTRL_ATTR_POLICY_DO,
@@ -88,5 +89,5 @@
   __CTRL_ATTR_POLICY_DUMP_MAX,
   CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
 };
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/hid.h b/libc/kernel/uapi/linux/hid.h
index ce93cd7..37ab462 100644
--- a/libc/kernel/uapi/linux/hid.h
+++ b/libc/kernel/uapi/linux/hid.h
@@ -22,12 +22,20 @@
 #define USB_INTERFACE_SUBCLASS_BOOT 1
 #define USB_INTERFACE_PROTOCOL_KEYBOARD 1
 #define USB_INTERFACE_PROTOCOL_MOUSE 2
-#define HID_REQ_GET_REPORT 0x01
-#define HID_REQ_GET_IDLE 0x02
-#define HID_REQ_GET_PROTOCOL 0x03
-#define HID_REQ_SET_REPORT 0x09
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_SET_PROTOCOL 0x0B
+enum hid_report_type {
+  HID_INPUT_REPORT = 0,
+  HID_OUTPUT_REPORT = 1,
+  HID_FEATURE_REPORT = 2,
+  HID_REPORT_TYPES,
+};
+enum hid_class_request {
+  HID_REQ_GET_REPORT = 0x01,
+  HID_REQ_GET_IDLE = 0x02,
+  HID_REQ_GET_PROTOCOL = 0x03,
+  HID_REQ_SET_REPORT = 0x09,
+  HID_REQ_SET_IDLE = 0x0A,
+  HID_REQ_SET_PROTOCOL = 0x0B,
+};
 #define HID_DT_HID (USB_TYPE_CLASS | 0x01)
 #define HID_DT_REPORT (USB_TYPE_CLASS | 0x02)
 #define HID_DT_PHYSICAL (USB_TYPE_CLASS | 0x03)
diff --git a/libc/kernel/uapi/linux/idxd.h b/libc/kernel/uapi/linux/idxd.h
index 26f41ab..a456352 100644
--- a/libc/kernel/uapi/linux/idxd.h
+++ b/libc/kernel/uapi/linux/idxd.h
@@ -38,6 +38,7 @@
   IDXD_SCMD_WQ_NO_SIZE = 0x800e0000,
   IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
   IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
+  IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
 };
 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
 #define IDXD_SCMD_SOFTERR_SHIFT 16
@@ -90,14 +91,14 @@
   IAX_OPCODE_CRC64,
   IAX_OPCODE_ZERO_DECOMP_32 = 0x48,
   IAX_OPCODE_ZERO_DECOMP_16,
-  IAX_OPCODE_DECOMP_32 = 0x4c,
-  IAX_OPCODE_DECOMP_16,
+  IAX_OPCODE_ZERO_COMP_32 = 0x4c,
+  IAX_OPCODE_ZERO_COMP_16,
   IAX_OPCODE_SCAN = 0x50,
   IAX_OPCODE_SET_MEMBER,
   IAX_OPCODE_EXTRACT,
   IAX_OPCODE_SELECT,
   IAX_OPCODE_RLE_BURST,
-  IAX_OPCDE_FIND_UNIQUE,
+  IAX_OPCODE_FIND_UNIQUE,
   IAX_OPCODE_EXPAND,
 };
 enum dsa_completion_status {
diff --git a/libc/kernel/uapi/linux/if_alg.h b/libc/kernel/uapi/linux/if_alg.h
index 6530a16..237fe6e 100644
--- a/libc/kernel/uapi/linux/if_alg.h
+++ b/libc/kernel/uapi/linux/if_alg.h
@@ -35,7 +35,7 @@
 };
 struct af_alg_iv {
   __u32 ivlen;
-  __u8 iv[0];
+  __u8 iv[];
 };
 #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 6aece37..65b07e1 100644
--- a/libc/kernel/uapi/linux/if_arcnet.h
+++ b/libc/kernel/uapi/linux/if_arcnet.h
@@ -40,18 +40,18 @@
   __u8 proto;
   __u8 split_flag;
   __be16 sequence;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1201_HDR_SIZE 4
 struct arc_rfc1051 {
   __u8 proto;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1051_HDR_SIZE 1
 struct arc_eth_encap {
   __u8 proto;
   struct ethhdr eth;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define ETH_ENCAP_HDR_SIZE 14
 struct arc_cap {
diff --git a/libc/kernel/uapi/linux/if_ether.h b/libc/kernel/uapi/linux/if_ether.h
index bd8e045..6043921 100644
--- a/libc/kernel/uapi/linux/if_ether.h
+++ b/libc/kernel/uapi/linux/if_ether.h
@@ -97,6 +97,7 @@
 #define ETH_P_QINQ3 0x9300
 #define ETH_P_EDSA 0xDADA
 #define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_DSA_A5PSW 0xE001
 #define ETH_P_IFE 0xED3E
 #define ETH_P_AF_IUCV 0xFBFB
 #define ETH_P_802_3_MIN 0x0600
@@ -111,6 +112,7 @@
 #define ETH_P_LOCALTALK 0x0009
 #define ETH_P_CAN 0x000C
 #define ETH_P_CANFD 0x000D
+#define ETH_P_CANXL 0x000E
 #define ETH_P_PPPTALK 0x0010
 #define ETH_P_TR_802_2 0x0011
 #define ETH_P_MOBITEX 0x0015
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index fbe384e..ebf403a 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -165,6 +165,7 @@
   IFLA_GRO_MAX_SIZE,
   IFLA_TSO_MAX_SIZE,
   IFLA_TSO_MAX_SEGS,
+  IFLA_ALLMULTI,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -411,6 +412,7 @@
   IFLA_XFRM_UNSPEC,
   IFLA_XFRM_LINK,
   IFLA_XFRM_IF_ID,
+  IFLA_XFRM_COLLECT_METADATA,
   __IFLA_XFRM_MAX
 };
 #define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
@@ -639,6 +641,7 @@
   IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
   IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
   IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+  IFLA_BOND_SLAVE_PRIO,
   __IFLA_BOND_SLAVE_MAX,
 };
 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
@@ -936,4 +939,10 @@
   __IFLA_MCTP_MAX,
 };
 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
+enum {
+  IFLA_DSA_UNSPEC,
+  IFLA_DSA_MASTER,
+  __IFLA_DSA_MAX,
+};
+#define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/if_macsec.h b/libc/kernel/uapi/linux/if_macsec.h
index e60d767..7b51f80 100644
--- a/libc/kernel/uapi/linux/if_macsec.h
+++ b/libc/kernel/uapi/linux/if_macsec.h
@@ -23,6 +23,7 @@
 #define MACSEC_GENL_VERSION 1
 #define MACSEC_MAX_KEY_LEN 128
 #define MACSEC_KEYID_LEN 16
+#define MACSEC_SALT_LEN 12
 #define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
 #define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
 #define MACSEC_CIPHER_ID_GCM_AES_XPN_128 0x0080C20001000003ULL
diff --git a/libc/kernel/uapi/linux/if_pppox.h b/libc/kernel/uapi/linux/if_pppox.h
index 40d25e8..2acafdf 100644
--- a/libc/kernel/uapi/linux/if_pppox.h
+++ b/libc/kernel/uapi/linux/if_pppox.h
@@ -51,27 +51,27 @@
     struct pppoe_addr pppoe;
     struct pptp_addr pptp;
   } sa_addr;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tp {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tp_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpin6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpin6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 struct sockaddr_pppol2tpv3in6 {
   __kernel_sa_family_t sa_family;
   unsigned int sa_protocol;
   struct pppol2tpv3in6_addr pppol2tp;
-} __packed;
+} __attribute__((__packed__));
 #define PPPOEIOCSFWD _IOW(0xB1, 0, size_t)
 #define PPPOEIOCDFWD _IO(0xB1, 1)
 #define PADI_CODE 0x09
@@ -82,7 +82,7 @@
 struct pppoe_tag {
   __be16 tag_type;
   __be16 tag_len;
-  char tag_data[0];
+  char tag_data[];
 } __attribute__((packed));
 #define PTT_EOL __cpu_to_be16(0x0000)
 #define PTT_SRV_NAME __cpu_to_be16(0x0101)
@@ -107,7 +107,7 @@
   __u8 code;
   __be16 sid;
   __be16 length;
-  struct pppoe_tag tag[0];
-} __packed;
+  struct pppoe_tag tag[];
+} __attribute__((__packed__));
 #define PPPOE_SES_HLEN 8
 #endif
diff --git a/libc/kernel/uapi/linux/if_tun.h b/libc/kernel/uapi/linux/if_tun.h
index d1a8f9e..dda0830 100644
--- a/libc/kernel/uapi/linux/if_tun.h
+++ b/libc/kernel/uapi/linux/if_tun.h
@@ -57,6 +57,7 @@
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
 #define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_CARRIER 0x0040
 #define IFF_NO_PI 0x1000
 #define IFF_ONE_QUEUE 0x2000
 #define IFF_VNET_HDR 0x4000
@@ -81,6 +82,6 @@
 struct tun_filter {
   __u16 flags;
   __u16 count;
-  __u8 addr[0][ETH_ALEN];
+  __u8 addr[][ETH_ALEN];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/igmp.h b/libc/kernel/uapi/linux/igmp.h
index 885b0f8..71c2c8d 100644
--- a/libc/kernel/uapi/linux/igmp.h
+++ b/libc/kernel/uapi/linux/igmp.h
@@ -37,7 +37,7 @@
   __u8 grec_auxwords;
   __be16 grec_nsrcs;
   __be32 grec_mca;
-  __be32 grec_src[0];
+  __be32 grec_src[];
 };
 struct igmpv3_report {
   __u8 type;
@@ -45,7 +45,7 @@
   __sum16 csum;
   __be16 resv2;
   __be16 ngrec;
-  struct igmpv3_grec grec[0];
+  struct igmpv3_grec grec[];
 };
 struct igmpv3_query {
   __u8 type;
@@ -61,7 +61,7 @@
 #endif
   __u8 qqic;
   __be16 nsrcs;
-  __be32 srcs[0];
+  __be32 srcs[];
 };
 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
 #define IGMP_HOST_MEMBERSHIP_REPORT 0x12
diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h
index aa66d50..af7bdda 100644
--- a/libc/kernel/uapi/linux/iio/types.h
+++ b/libc/kernel/uapi/linux/iio/types.h
@@ -101,6 +101,12 @@
   IIO_MOD_ETHANOL,
   IIO_MOD_H2,
   IIO_MOD_O2,
+  IIO_MOD_LINEAR_X,
+  IIO_MOD_LINEAR_Y,
+  IIO_MOD_LINEAR_Z,
+  IIO_MOD_PITCH,
+  IIO_MOD_YAW,
+  IIO_MOD_ROLL,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
@@ -110,11 +116,14 @@
   IIO_EV_TYPE_MAG_ADAPTIVE,
   IIO_EV_TYPE_CHANGE,
   IIO_EV_TYPE_MAG_REFERENCED,
+  IIO_EV_TYPE_GESTURE,
 };
 enum iio_event_direction {
   IIO_EV_DIR_EITHER,
   IIO_EV_DIR_RISING,
   IIO_EV_DIR_FALLING,
   IIO_EV_DIR_NONE,
+  IIO_EV_DIR_SINGLETAP,
+  IIO_EV_DIR_DOUBLETAP,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/in.h b/libc/kernel/uapi/linux/in.h
index d4060e7..53d3074 100644
--- a/libc/kernel/uapi/linux/in.h
+++ b/libc/kernel/uapi/linux/in.h
@@ -22,6 +22,7 @@
 #include <bits/ip_mreq_source.h>
 #include <bits/in_addr.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 #include <linux/libc-compat.h>
 #include <linux/socket.h>
 #if __UAPI_DEF_IN_IPPROTO
@@ -68,6 +69,8 @@
 #define IPPROTO_PIM IPPROTO_PIM
   IPPROTO_COMP = 108,
 #define IPPROTO_COMP IPPROTO_COMP
+  IPPROTO_L2TP = 115,
+#define IPPROTO_L2TP IPPROTO_L2TP
   IPPROTO_SCTP = 132,
 #define IPPROTO_SCTP IPPROTO_SCTP
   IPPROTO_UDPLITE = 136,
diff --git a/libc/kernel/uapi/linux/inet_diag.h b/libc/kernel/uapi/linux/inet_diag.h
index 8656dd4..27f390b 100644
--- a/libc/kernel/uapi/linux/inet_diag.h
+++ b/libc/kernel/uapi/linux/inet_diag.h
@@ -89,7 +89,7 @@
   __u8 family;
   __u8 prefix_len;
   int port;
-  __be32 addr[0];
+  __be32 addr[];
 };
 struct inet_diag_markcond {
   __u32 mark;
diff --git a/libc/kernel/uapi/linux/inotify.h b/libc/kernel/uapi/linux/inotify.h
index eb9ac3c..3b4b577 100644
--- a/libc/kernel/uapi/linux/inotify.h
+++ b/libc/kernel/uapi/linux/inotify.h
@@ -25,7 +25,7 @@
   __u32 mask;
   __u32 cookie;
   __u32 len;
-  char name[0];
+  char name[];
 };
 #define IN_ACCESS 0x00000001
 #define IN_MODIFY 0x00000002
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index 4b251df..40827b5 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -720,6 +720,7 @@
 #define ABS_TILT_Y 0x1b
 #define ABS_TOOL_WIDTH 0x1c
 #define ABS_VOLUME 0x20
+#define ABS_PROFILE 0x21
 #define ABS_MISC 0x28
 #define ABS_RESERVED 0x2e
 #define ABS_MT_SLOT 0x2f
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
index 5dda702..82dee97 100644
--- a/libc/kernel/uapi/linux/io_uring.h
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -20,6 +20,10 @@
 #define LINUX_IO_URING_H
 #include <linux/fs.h>
 #include <linux/types.h>
+#include <linux/time_types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 struct io_uring_sqe {
   __u8 opcode;
   __u8 flags;
@@ -56,6 +60,8 @@
     __u32 unlink_flags;
     __u32 hardlink_flags;
     __u32 xattr_flags;
+    __u32 msg_ring_flags;
+    __u32 uring_cmd_flags;
   };
   __u64 user_data;
   union {
@@ -66,6 +72,10 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    struct {
+      __u16 addr_len;
+      __u16 __pad3[1];
+    };
   };
   union {
     struct {
@@ -104,6 +114,8 @@
 #define IORING_SETUP_TASKRUN_FLAG (1U << 9)
 #define IORING_SETUP_SQE128 (1U << 10)
 #define IORING_SETUP_CQE32 (1U << 11)
+#define IORING_SETUP_SINGLE_ISSUER (1U << 12)
+#define IORING_SETUP_DEFER_TASKRUN (1U << 13)
 enum io_uring_op {
   IORING_OP_NOP,
   IORING_OP_READV,
@@ -152,8 +164,11 @@
   IORING_OP_GETXATTR,
   IORING_OP_SOCKET,
   IORING_OP_URING_CMD,
+  IORING_OP_SEND_ZC,
+  IORING_OP_SENDMSG_ZC,
   IORING_OP_LAST,
 };
+#define IORING_URING_CMD_FIXED (1U << 0)
 #define IORING_FSYNC_DATASYNC (1U << 0)
 #define IORING_TIMEOUT_ABS (1U << 0)
 #define IORING_TIMEOUT_UPDATE (1U << 1)
@@ -167,11 +182,20 @@
 #define IORING_POLL_ADD_MULTI (1U << 0)
 #define IORING_POLL_UPDATE_EVENTS (1U << 1)
 #define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+#define IORING_POLL_ADD_LEVEL (1U << 3)
 #define IORING_ASYNC_CANCEL_ALL (1U << 0)
 #define IORING_ASYNC_CANCEL_FD (1U << 1)
 #define IORING_ASYNC_CANCEL_ANY (1U << 2)
+#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
 #define IORING_RECVSEND_POLL_FIRST (1U << 0)
+#define IORING_RECV_MULTISHOT (1U << 1)
+#define IORING_RECVSEND_FIXED_BUF (1U << 2)
 #define IORING_ACCEPT_MULTISHOT (1U << 0)
+enum {
+  IORING_MSG_DATA,
+  IORING_MSG_SEND_FD,
+};
+#define IORING_MSG_RING_CQE_SKIP (1U << 0)
 struct io_uring_cqe {
   __u64 user_data;
   __s32 res;
@@ -181,6 +205,7 @@
 #define IORING_CQE_F_BUFFER (1U << 0)
 #define IORING_CQE_F_MORE (1U << 1)
 #define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
+#define IORING_CQE_F_NOTIF (1U << 3)
 enum {
   IORING_CQE_BUFFER_SHIFT = 16,
 };
@@ -268,6 +293,8 @@
   IORING_UNREGISTER_RING_FDS = 21,
   IORING_REGISTER_PBUF_RING = 22,
   IORING_UNREGISTER_PBUF_RING = 23,
+  IORING_REGISTER_SYNC_CANCEL = 24,
+  IORING_REGISTER_FILE_ALLOC_RANGE = 25,
   IORING_REGISTER_LAST
 };
 enum {
@@ -300,6 +327,17 @@
   __u32 nr;
   __u32 resv2;
 };
+struct io_uring_notification_slot {
+  __u64 tag;
+  __u64 resv[3];
+};
+struct io_uring_notification_register {
+  __u32 nr_slots;
+  __u32 resv;
+  __u64 resv2;
+  __u64 data;
+  __u64 resv3;
+};
 #define IORING_REGISTER_FILES_SKIP (- 2)
 #define IO_URING_OP_SUPPORTED (1U << 0)
 struct io_uring_probe_op {
@@ -313,7 +351,7 @@
   __u8 ops_len;
   __u16 resv;
   __u32 resv2[3];
-  struct io_uring_probe_op ops[0];
+  struct io_uring_probe_op ops[];
 };
 struct io_uring_restriction {
   __u16 opcode;
@@ -362,4 +400,25 @@
   __u32 pad;
   __u64 ts;
 };
+struct io_uring_sync_cancel_reg {
+  __u64 addr;
+  __s32 fd;
+  __u32 flags;
+  struct __kernel_timespec timeout;
+  __u64 pad[4];
+};
+struct io_uring_file_index_range {
+  __u32 off;
+  __u32 len;
+  __u64 resv;
+};
+struct io_uring_recvmsg_out {
+  __u32 namelen;
+  __u32 controllen;
+  __u32 payloadlen;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
 #endif
diff --git a/libc/kernel/uapi/linux/ip.h b/libc/kernel/uapi/linux/ip.h
index 9571cac..766a808 100644
--- a/libc/kernel/uapi/linux/ip.h
+++ b/libc/kernel/uapi/linux/ip.h
@@ -86,8 +86,9 @@
   __u8 ttl;
   __u8 protocol;
   __sum16 check;
-  __be32 saddr;
+  __struct_group(, addrs,, __be32 saddr;
   __be32 daddr;
+ );
 };
 struct ip_auth_hdr {
   __u8 nexthdr;
@@ -95,12 +96,12 @@
   __be16 reserved;
   __be32 spi;
   __be32 seq_no;
-  __u8 auth_data[0];
+  __u8 auth_data[];
 };
 struct ip_esp_hdr {
   __be32 spi;
   __be32 seq_no;
-  __u8 enc_data[0];
+  __u8 enc_data[];
 };
 struct ip_comp_hdr {
   __u8 nexthdr;
diff --git a/libc/kernel/uapi/linux/ip_vs.h b/libc/kernel/uapi/linux/ip_vs.h
index 6e3defe..916fcf0 100644
--- a/libc/kernel/uapi/linux/ip_vs.h
+++ b/libc/kernel/uapi/linux/ip_vs.h
@@ -159,11 +159,11 @@
   __be16 port;
   __u32 fwmark;
   unsigned int num_dests;
-  struct ip_vs_dest_entry entrytable[0];
+  struct ip_vs_dest_entry entrytable[];
 };
 struct ip_vs_get_services {
   unsigned int num_services;
-  struct ip_vs_service_entry entrytable[0];
+  struct ip_vs_service_entry entrytable[];
 };
 struct ip_vs_timeout_user {
   int tcp_timeout;
diff --git a/libc/kernel/uapi/linux/ipv6.h b/libc/kernel/uapi/linux/ipv6.h
index 757cbda..2e57ed1 100644
--- a/libc/kernel/uapi/linux/ipv6.h
+++ b/libc/kernel/uapi/linux/ipv6.h
@@ -87,8 +87,9 @@
   __be16 payload_len;
   __u8 nexthdr;
   __u8 hop_limit;
-  struct in6_addr saddr;
+  __struct_group(, addrs,, struct in6_addr saddr;
   struct in6_addr daddr;
+ );
 };
 enum {
   DEVCONF_FORWARDING = 0,
diff --git a/libc/kernel/uapi/linux/iso_fs.h b/libc/kernel/uapi/linux/iso_fs.h
index 8227031..f9c4f48 100644
--- a/libc/kernel/uapi/linux/iso_fs.h
+++ b/libc/kernel/uapi/linux/iso_fs.h
@@ -132,7 +132,7 @@
   __u8 name_len[2];
   __u8 extent[4];
   __u8 parent[2];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 struct iso_directory_record {
   __u8 length[ISODCL(1, 1)];
@@ -145,7 +145,7 @@
   __u8 interleave[ISODCL(28, 28)];
   __u8 volume_sequence_number[ISODCL(29, 32)];
   __u8 name_len[ISODCL(33, 33)];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 #define ISOFS_BLOCK_BITS 11
 #define ISOFS_BLOCK_SIZE 2048
diff --git a/libc/kernel/uapi/linux/jffs2.h b/libc/kernel/uapi/linux/jffs2.h
index 698f953..643aa2e 100644
--- a/libc/kernel/uapi/linux/jffs2.h
+++ b/libc/kernel/uapi/linux/jffs2.h
@@ -86,7 +86,7 @@
   __u8 unused[2];
   jint32_t node_crc;
   jint32_t name_crc;
-  __u8 name[0];
+  __u8 name[];
 };
 struct jffs2_raw_inode {
   jint16_t magic;
@@ -110,7 +110,7 @@
   jint16_t flags;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 };
 struct jffs2_raw_xattr {
   jint16_t magic;
@@ -124,7 +124,7 @@
   jint16_t value_len;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 } __attribute__((packed));
 struct jffs2_raw_xref {
   jint16_t magic;
@@ -146,7 +146,7 @@
   jint32_t padded;
   jint32_t sum_crc;
   jint32_t node_crc;
-  jint32_t sum[0];
+  jint32_t sum[];
 };
 union jffs2_node_union {
   struct jffs2_raw_inode i;
diff --git a/libc/kernel/uapi/linux/kcov.h b/libc/kernel/uapi/linux/kcov.h
index cf2660b..5b6f6b1 100644
--- a/libc/kernel/uapi/linux/kcov.h
+++ b/libc/kernel/uapi/linux/kcov.h
@@ -24,7 +24,7 @@
   __u32 area_size;
   __u32 num_handles;
   __aligned_u64 common_handle;
-  __aligned_u64 handles[0];
+  __aligned_u64 handles[];
 };
 #define KCOV_REMOTE_MAX_HANDLES 0x100
 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index 8ec47f4..d21e0fc 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -21,7 +21,7 @@
 #include <drm/drm.h>
 #include <linux/ioctl.h>
 #define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 8
+#define KFD_IOCTL_MINOR_VERSION 11
 struct kfd_ioctl_get_version_args {
   __u32 major_version;
   __u32 minor_version;
@@ -72,6 +72,11 @@
   __u32 queue_id;
   __u32 pad;
 };
+struct kfd_ioctl_get_available_memory_args {
+  __u64 available;
+  __u32 gpu_id;
+  __u32 pad;
+};
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
 struct kfd_ioctl_set_memory_policy_args {
@@ -295,6 +300,33 @@
   KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
   KFD_SMI_EVENT_GPU_PRE_RESET = 3,
   KFD_SMI_EVENT_GPU_POST_RESET = 4,
+  KFD_SMI_EVENT_MIGRATE_START = 5,
+  KFD_SMI_EVENT_MIGRATE_END = 6,
+  KFD_SMI_EVENT_PAGE_FAULT_START = 7,
+  KFD_SMI_EVENT_PAGE_FAULT_END = 8,
+  KFD_SMI_EVENT_QUEUE_EVICTION = 9,
+  KFD_SMI_EVENT_QUEUE_RESTORE = 10,
+  KFD_SMI_EVENT_UNMAP_FROM_GPU = 11,
+  KFD_SMI_EVENT_ALL_PROCESS = 64
+};
+enum KFD_MIGRATE_TRIGGERS {
+  KFD_MIGRATE_TRIGGER_PREFETCH,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_GPU,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_CPU,
+  KFD_MIGRATE_TRIGGER_TTM_EVICTION
+};
+enum KFD_QUEUE_EVICTION_TRIGGERS {
+  KFD_QUEUE_EVICTION_TRIGGER_SVM,
+  KFD_QUEUE_EVICTION_TRIGGER_USERPTR,
+  KFD_QUEUE_EVICTION_TRIGGER_TTM,
+  KFD_QUEUE_EVICTION_TRIGGER_SUSPEND,
+  KFD_QUEUE_EVICTION_CRIU_CHECKPOINT,
+  KFD_QUEUE_EVICTION_CRIU_RESTORE
+};
+enum KFD_SVM_UNMAP_TRIGGERS {
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
+  KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
 };
 #define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
 #define KFD_SMI_EVENT_MSG_SIZE 96
@@ -346,6 +378,7 @@
 #define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
 #define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
 #define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
 enum kfd_ioctl_svm_op {
   KFD_IOCTL_SVM_OP_SET_ATTR,
   KFD_IOCTL_SVM_OP_GET_ATTR
@@ -417,6 +450,7 @@
 #define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
 #define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
 #define AMDKFD_IOC_CRIU_OP AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
+#define AMDKFD_IOC_AVAILABLE_MEMORY AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
 #define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x23
+#define AMDKFD_COMMAND_END 0x24
 #endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index cc5495d..768f57e 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -216,6 +216,8 @@
 #define KVM_EXIT_X86_BUS_LOCK 33
 #define KVM_EXIT_XEN 34
 #define KVM_EXIT_RISCV_SBI 35
+#define KVM_EXIT_RISCV_CSR 36
+#define KVM_EXIT_NOTIFY 37
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -379,6 +381,16 @@
       unsigned long args[6];
       unsigned long ret[2];
     } riscv_sbi;
+    struct {
+      unsigned long csr_num;
+      unsigned long new_value;
+      unsigned long write_mask;
+      unsigned long ret_value;
+    } riscv_csr;
+    struct {
+#define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
+      __u32 flags;
+    } notify;
     char padding[256];
   };
 #define SYNC_REGS_SIZE_BYTES 2048
@@ -408,7 +420,7 @@
 };
 struct kvm_coalesced_mmio_ring {
   __u32 first, last;
-  struct kvm_coalesced_mmio coalesced_mmio[0];
+  struct kvm_coalesced_mmio coalesced_mmio[];
 };
 #define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
 struct kvm_translation {
@@ -465,7 +477,7 @@
 };
 struct kvm_signal_mask {
   __u32 len;
-  __u8 sigset[0];
+  __u8 sigset[];
 };
 struct kvm_tpr_access_ctl {
   __u32 enabled;
@@ -910,6 +922,13 @@
 #define KVM_CAP_VM_TSC_CONTROL 214
 #define KVM_CAP_SYSTEM_EVENT_DATA 215
 #define KVM_CAP_ARM_SYSTEM_SUSPEND 216
+#define KVM_CAP_S390_PROTECTED_DUMP 217
+#define KVM_CAP_X86_TRIPLE_FAULT_EVENT 218
+#define KVM_CAP_X86_NOTIFY_VMEXIT 219
+#define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
+#define KVM_CAP_S390_ZPCI_OP 221
+#define KVM_CAP_S390_CPU_TOPOLOGY 222
+#define KVM_CAP_DIRTY_LOG_RING_ACQ_REL 223
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -963,7 +982,7 @@
 struct kvm_irq_routing {
   __u32 nr;
   __u32 flags;
-  struct kvm_irq_routing_entry entries[0];
+  struct kvm_irq_routing_entry entries[];
 };
 #endif
 #ifdef KVM_CAP_MCE
@@ -1049,7 +1068,7 @@
 #define KVM_REG_SIZE_U2048 0x0080000000000000ULL
 struct kvm_reg_list {
   __u64 n;
-  __u64 reg[0];
+  __u64 reg[];
 };
 struct kvm_one_reg {
   __u64 id;
@@ -1263,6 +1282,48 @@
   __u64 size;
   __u64 tweak;
 };
+enum pv_cmd_dmp_id {
+  KVM_PV_DUMP_INIT,
+  KVM_PV_DUMP_CONFIG_STOR_STATE,
+  KVM_PV_DUMP_COMPLETE,
+  KVM_PV_DUMP_CPU,
+};
+struct kvm_s390_pv_dmp {
+  __u64 subcmd;
+  __u64 buff_addr;
+  __u64 buff_len;
+  __u64 gaddr;
+  __u64 reserved[4];
+};
+enum pv_cmd_info_id {
+  KVM_PV_INFO_VM,
+  KVM_PV_INFO_DUMP,
+};
+struct kvm_s390_pv_info_dump {
+  __u64 dump_cpu_buffer_len;
+  __u64 dump_config_mem_buffer_per_1m;
+  __u64 dump_config_finalize_len;
+};
+struct kvm_s390_pv_info_vm {
+  __u64 inst_calls_list[4];
+  __u64 max_cpus;
+  __u64 max_guests;
+  __u64 max_guest_addr;
+  __u64 feature_indication;
+};
+struct kvm_s390_pv_info_header {
+  __u32 id;
+  __u32 len_max;
+  __u32 len_written;
+  __u32 reserved;
+};
+struct kvm_s390_pv_info {
+  struct kvm_s390_pv_info_header header;
+  union {
+    struct kvm_s390_pv_info_dump dump;
+    struct kvm_s390_pv_info_vm vm;
+  };
+};
 enum pv_cmd_id {
   KVM_PV_ENABLE,
   KVM_PV_DISABLE,
@@ -1271,6 +1332,8 @@
   KVM_PV_VERIFY,
   KVM_PV_PREP_RESET,
   KVM_PV_UNSHARE_ALL,
+  KVM_PV_INFO,
+  KVM_PV_DUMP,
 };
 struct kvm_pv_cmd {
   __u32 cmd;
@@ -1575,4 +1638,28 @@
 };
 #define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
 #define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
+#define KVM_S390_PV_CPU_COMMAND _IOWR(KVMIO, 0xd0, struct kvm_pv_cmd)
+#define KVM_X86_NOTIFY_VMEXIT_ENABLED (1ULL << 0)
+#define KVM_X86_NOTIFY_VMEXIT_USER (1ULL << 1)
+#define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op)
+struct kvm_s390_zpci_op {
+  __u32 fh;
+  __u8 op;
+  __u8 pad[3];
+  union {
+    struct {
+      __u64 ibv;
+      __u64 sb;
+      __u32 flags;
+      __u32 noi;
+      __u8 isc;
+      __u8 sbo;
+      __u16 pad;
+    } reg_aen;
+    __u64 reserved[8];
+  } u;
+};
+#define KVM_S390_ZPCIOP_REG_AEN 0
+#define KVM_S390_ZPCIOP_DEREG_AEN 1
+#define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0)
 #endif
diff --git a/libc/kernel/uapi/linux/l2tp.h b/libc/kernel/uapi/linux/l2tp.h
index a054819..dee634e 100644
--- a/libc/kernel/uapi/linux/l2tp.h
+++ b/libc/kernel/uapi/linux/l2tp.h
@@ -22,7 +22,6 @@
 #include <linux/socket.h>
 #include <linux/in.h>
 #include <linux/in6.h>
-#define IPPROTO_L2TP 115
 #define __SOCK_SIZE__ 16
 struct sockaddr_l2tpip {
   __kernel_sa_family_t l2tp_family;
diff --git a/libc/kernel/uapi/linux/loadpin.h b/libc/kernel/uapi/linux/loadpin.h
new file mode 100644
index 0000000..2641939
--- /dev/null
+++ b/libc/kernel/uapi/linux/loadpin.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_LINUX_LOOP_LOADPIN_H
+#define _UAPI_LINUX_LOOP_LOADPIN_H
+#define LOADPIN_IOC_MAGIC 'L'
+#define LOADPIN_IOC_SET_TRUSTED_VERITY_DIGESTS _IOW(LOADPIN_IOC_MAGIC, 0x00, unsigned int)
+#endif
diff --git a/libc/kernel/uapi/linux/lwtunnel.h b/libc/kernel/uapi/linux/lwtunnel.h
index e6fb536..94011dd 100644
--- a/libc/kernel/uapi/linux/lwtunnel.h
+++ b/libc/kernel/uapi/linux/lwtunnel.h
@@ -30,6 +30,7 @@
   LWTUNNEL_ENCAP_SEG6_LOCAL,
   LWTUNNEL_ENCAP_RPL,
   LWTUNNEL_ENCAP_IOAM6,
+  LWTUNNEL_ENCAP_XFRM,
   __LWTUNNEL_ENCAP_MAX,
 };
 #define LWTUNNEL_ENCAP_MAX (__LWTUNNEL_ENCAP_MAX - 1)
@@ -107,4 +108,11 @@
 };
 #define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
 #define LWT_BPF_MAX_HEADROOM 256
+enum {
+  LWT_XFRM_UNSPEC,
+  LWT_XFRM_IF_ID,
+  LWT_XFRM_LINK,
+  __LWT_XFRM_MAX,
+};
+#define LWT_XFRM_MAX (__LWT_XFRM_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/magic.h b/libc/kernel/uapi/linux/magic.h
index 6563411..ac2a0f3 100644
--- a/libc/kernel/uapi/linux/magic.h
+++ b/libc/kernel/uapi/linux/magic.h
@@ -99,11 +99,7 @@
 #define AAFS_MAGIC 0x5a3c69f0
 #define ZONEFS_MAGIC 0x5a4f4653
 #define UDF_SUPER_MAGIC 0x15013346
-#define BALLOON_KVM_MAGIC 0x13661366
-#define ZSMALLOC_MAGIC 0x58295829
 #define DMA_BUF_MAGIC 0x444d4142
 #define DEVMEM_MAGIC 0x454d444d
-#define Z3FOLD_MAGIC 0x33
-#define PPC_CMM_MAGIC 0xc7571590
 #define SECRETMEM_MAGIC 0x5345434d
 #endif
diff --git a/libc/kernel/uapi/linux/media-bus-format.h b/libc/kernel/uapi/linux/media-bus-format.h
index 2542a32..4555de1 100644
--- a/libc/kernel/uapi/linux/media-bus-format.h
+++ b/libc/kernel/uapi/linux/media-bus-format.h
@@ -43,9 +43,13 @@
 #define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
 #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_RGB666_1X30_CPADLO 0x101e
+#define MEDIA_BUS_FMT_RGB888_1X30_CPADLO 0x101f
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
 #define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
 #define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB666_1X36_CPADLO 0x1020
+#define MEDIA_BUS_FMT_RGB888_1X36_CPADLO 0x1021
 #define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
 #define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
 #define MEDIA_BUS_FMT_Y8_1X8 0x2001
diff --git a/libc/kernel/uapi/linux/minix_fs.h b/libc/kernel/uapi/linux/minix_fs.h
index b6f1c69..0878efe 100644
--- a/libc/kernel/uapi/linux/minix_fs.h
+++ b/libc/kernel/uapi/linux/minix_fs.h
@@ -77,10 +77,10 @@
 };
 struct minix_dir_entry {
   __u16 inode;
-  char name[0];
+  char name[];
 };
 struct minix3_dir_entry {
   __u32 inode;
-  char name[0];
+  char name[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/mmc/ioctl.h b/libc/kernel/uapi/linux/mmc/ioctl.h
index afea6a5..451134b 100644
--- a/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -39,7 +39,7 @@
 #define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
 struct mmc_ioc_multi_cmd {
   __u64 num_of_cmds;
-  struct mmc_ioc_cmd cmds[0];
+  struct mmc_ioc_cmd cmds[];
 };
 #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
 #define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
diff --git a/libc/kernel/uapi/linux/ndctl.h b/libc/kernel/uapi/linux/ndctl.h
index 0fd3ac4..7e0d560 100644
--- a/libc/kernel/uapi/linux/ndctl.h
+++ b/libc/kernel/uapi/linux/ndctl.h
@@ -22,33 +22,33 @@
 struct nd_cmd_dimm_flags {
   __u32 status;
   __u32 flags;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_size {
   __u32 status;
   __u32 config_size;
   __u32 max_xfer;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_get_config_data_hdr {
   __u32 in_offset;
   __u32 in_length;
   __u32 status;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_set_config_hdr {
   __u32 in_offset;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_hdr {
   __u32 opcode;
   __u32 in_length;
-  __u8 in_buf[0];
-} __packed;
+  __u8 in_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_vendor_tail {
   __u32 status;
   __u32 out_length;
-  __u8 out_buf[0];
-} __packed;
+  __u8 out_buf[];
+} __attribute__((__packed__));
 struct nd_cmd_ars_cap {
   __u64 address;
   __u64 length;
@@ -57,7 +57,7 @@
   __u32 clear_err_unit;
   __u16 flags;
   __u16 reserved;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_start {
   __u64 address;
   __u64 length;
@@ -66,7 +66,7 @@
   __u8 reserved[5];
   __u32 status;
   __u32 scrub_time;
-} __packed;
+} __attribute__((__packed__));
 struct nd_cmd_ars_status {
   __u32 status;
   __u32 out_length;
@@ -82,15 +82,15 @@
     __u32 reserved;
     __u64 err_address;
     __u64 length;
-  } __packed records[0];
-} __packed;
+  } __attribute__((__packed__)) records[];
+} __attribute__((__packed__));
 struct nd_cmd_clear_error {
   __u64 address;
   __u64 length;
   __u32 status;
   __u8 reserved[4];
   __u64 cleared;
-} __packed;
+} __attribute__((__packed__));
 enum {
   ND_CMD_IMPLEMENTED = 0,
   ND_CMD_ARS_CAP = 1,
diff --git a/libc/kernel/uapi/linux/neighbour.h b/libc/kernel/uapi/linux/neighbour.h
index b5dcf2e..b86d2ae 100644
--- a/libc/kernel/uapi/linux/neighbour.h
+++ b/libc/kernel/uapi/linux/neighbour.h
@@ -108,6 +108,7 @@
   NDTPA_QUEUE_LENBYTES,
   NDTPA_MCAST_REPROBES,
   NDTPA_PAD,
+  NDTPA_INTERVAL_PROBE_TIME_MS,
   __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/net_dropmon.h b/libc/kernel/uapi/linux/net_dropmon.h
index 35f70a5..4d2c336 100644
--- a/libc/kernel/uapi/linux/net_dropmon.h
+++ b/libc/kernel/uapi/linux/net_dropmon.h
@@ -36,11 +36,11 @@
 };
 struct net_dm_config_msg {
   __u32 entries;
-  struct net_dm_config_entry options[0];
+  struct net_dm_config_entry options[];
 };
 struct net_dm_alert_msg {
   __u32 entries;
-  struct net_dm_drop_point points[0];
+  struct net_dm_drop_point points[];
 };
 struct net_dm_user_msg {
   union {
diff --git a/libc/kernel/uapi/linux/netfilter/x_tables.h b/libc/kernel/uapi/linux/netfilter/x_tables.h
index 46bde57..0993265 100644
--- a/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -36,7 +36,7 @@
     } kernel;
     __u16 match_size;
   } u;
-  unsigned char data[0];
+  unsigned char data[];
 };
 struct xt_entry_target {
   union {
@@ -87,7 +87,7 @@
 struct xt_counters_info {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int num_counters;
-  struct xt_counters counters[0];
+  struct xt_counters counters[];
 };
 #define XT_INV_PROTO 0x40
 #define XT_MATCH_ITERATE(type,e,fn,args...) \
diff --git a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 340625f..862f514 100644
--- a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -72,7 +72,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define ARPT_BASE_CTL 96
 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
@@ -99,11 +99,11 @@
   unsigned int underflow[NF_ARP_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct arpt_entry entries[0];
+  struct arpt_entry entries[];
 };
 struct arpt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct arpt_entry entrytable[0];
+  struct arpt_entry entrytable[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index 74cd550..aa39c5b 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -28,7 +28,7 @@
 struct ebt_mac_wormhash {
   int table[257];
   int poolsize;
-  struct ebt_mac_wormhash_tuple pool[0];
+  struct ebt_mac_wormhash_tuple pool[];
 };
 #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 {
diff --git a/libc/kernel/uapi/linux/netfilter_decnet.h b/libc/kernel/uapi/linux/netfilter_decnet.h
deleted file mode 100644
index c9c16ca..0000000
--- a/libc/kernel/uapi/linux/netfilter_decnet.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   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 __LINUX_DECNET_NETFILTER_H
-#define __LINUX_DECNET_NETFILTER_H
-#include <linux/netfilter.h>
-#include <limits.h>
-#define NF_DN_NUMHOOKS 7
-#define NF_DN_PRE_ROUTING 0
-#define NF_DN_LOCAL_IN 1
-#define NF_DN_FORWARD 2
-#define NF_DN_LOCAL_OUT 3
-#define NF_DN_POST_ROUTING 4
-#define NF_DN_HELLO 5
-#define NF_DN_ROUTE 6
-enum nf_dn_hook_priorities {
-  NF_DN_PRI_FIRST = INT_MIN,
-  NF_DN_PRI_CONNTRACK = - 200,
-  NF_DN_PRI_MANGLE = - 150,
-  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_LAST = INT_MAX,
-};
-struct nf_dn_rtmsg {
-  int nfdn_ifindex;
-};
-#define NFDN_RTMSG(r) ((unsigned char *) (r) + NLMSG_ALIGN(sizeof(struct nf_dn_rtmsg)))
-#define DNRMG_L1_GROUP 0x01
-#define DNRMG_L2_GROUP 0x02
-enum {
-  DNRNG_NLGRP_NONE,
-#define DNRNG_NLGRP_NONE DNRNG_NLGRP_NONE
-  DNRNG_NLGRP_L1,
-#define DNRNG_NLGRP_L1 DNRNG_NLGRP_L1
-  DNRNG_NLGRP_L2,
-#define DNRNG_NLGRP_L2 DNRNG_NLGRP_L2
-  __DNRNG_NLGRP_MAX
-};
-#define DNRNG_NLGRP_MAX (__DNRNG_NLGRP_MAX - 1)
-#endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 033c519..14a65ad 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -79,7 +79,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define IPT_BASE_CTL 64
 #define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
@@ -113,12 +113,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ipt_entry entries[0];
+  struct ipt_entry entries[];
 };
 struct ipt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ipt_entry entrytable[0];
+  struct ipt_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index b3f426d..22071db 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -133,12 +133,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ip6t_entry entries[0];
+  struct ip6t_entry entries[];
 };
 struct ip6t_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ip6t_entry entrytable[0];
+  struct ip6t_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/libc/kernel/uapi/linux/netlink.h b/libc/kernel/uapi/linux/netlink.h
index bc3e749..17d5291 100644
--- a/libc/kernel/uapi/linux/netlink.h
+++ b/libc/kernel/uapi/linux/netlink.h
@@ -100,6 +100,8 @@
   NLMSGERR_ATTR_OFFS,
   NLMSGERR_ATTR_COOKIE,
   NLMSGERR_ATTR_POLICY,
+  NLMSGERR_ATTR_MISS_TYPE,
+  NLMSGERR_ATTR_MISS_NEST,
   __NLMSGERR_ATTR_MAX,
   NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 8655d5f..faff80a 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -185,6 +185,11 @@
   NL80211_CMD_COLOR_CHANGE_COMPLETED,
   NL80211_CMD_SET_FILS_AAD,
   NL80211_CMD_ASSOC_COMEBACK,
+  NL80211_CMD_ADD_LINK,
+  NL80211_CMD_REMOVE_LINK,
+  NL80211_CMD_ADD_LINK_STA,
+  NL80211_CMD_MODIFY_LINK_STA,
+  NL80211_CMD_REMOVE_LINK_STA,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -513,6 +518,15 @@
   NL80211_ATTR_AP_SETTINGS_FLAGS,
   NL80211_ATTR_EHT_CAPABILITY,
   NL80211_ATTR_DISABLE_EHT,
+  NL80211_ATTR_MLO_LINKS,
+  NL80211_ATTR_MLO_LINK_ID,
+  NL80211_ATTR_MLD_ADDR,
+  NL80211_ATTR_MLO_SUPPORT,
+  NL80211_ATTR_MAX_NUM_AKM_SUITES,
+  NL80211_ATTR_EML_CAPABILITY,
+  NL80211_ATTR_MLD_CAPA_AND_OPS,
+  NL80211_ATTR_TX_HW_TIMESTAMP,
+  NL80211_ATTR_RX_HW_TIMESTAMP,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -1103,6 +1117,8 @@
   NL80211_BSS_PARENT_BSSID,
   NL80211_BSS_CHAIN_SIGNAL,
   NL80211_BSS_FREQUENCY_OFFSET,
+  NL80211_BSS_MLO_LINK_ID,
+  NL80211_BSS_MLD_ADDR,
   __NL80211_BSS_AFTER_LAST,
   NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
@@ -1515,6 +1531,7 @@
   NL80211_EXT_FEATURE_BSS_COLOR,
   NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD,
   NL80211_EXT_FEATURE_RADAR_BACKGROUND,
+  NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
diff --git a/libc/kernel/uapi/linux/openvswitch.h b/libc/kernel/uapi/linux/openvswitch.h
index c7d719c..c44e950 100644
--- a/libc/kernel/uapi/linux/openvswitch.h
+++ b/libc/kernel/uapi/linux/openvswitch.h
@@ -44,6 +44,7 @@
   OVS_DP_ATTR_PAD,
   OVS_DP_ATTR_MASKS_CACHE_SIZE,
   OVS_DP_ATTR_PER_CPU_PIDS,
+  OVS_DP_ATTR_IFINDEX,
   __OVS_DP_ATTR_MAX
 };
 #define OVS_DP_ATTR_MAX (__OVS_DP_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index e1a38a8..87549aa 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -635,7 +635,8 @@
 #define PCI_EXT_CAP_ID_DVSEC 0x23
 #define PCI_EXT_CAP_ID_DLF 0x25
 #define PCI_EXT_CAP_ID_PL_16GT 0x26
-#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_ID_DOE 0x2E
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_DOE
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
 #define PCI_ERR_UNCOR_STATUS 0x04
@@ -938,4 +939,25 @@
 #define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#define PCI_DOE_CAP 0x04
+#define PCI_DOE_CAP_INT_SUP 0x00000001
+#define PCI_DOE_CAP_INT_MSG_NUM 0x00000ffe
+#define PCI_DOE_CTRL 0x08
+#define PCI_DOE_CTRL_ABORT 0x00000001
+#define PCI_DOE_CTRL_INT_EN 0x00000002
+#define PCI_DOE_CTRL_GO 0x80000000
+#define PCI_DOE_STATUS 0x0c
+#define PCI_DOE_STATUS_BUSY 0x00000001
+#define PCI_DOE_STATUS_INT_STATUS 0x00000002
+#define PCI_DOE_STATUS_ERROR 0x00000004
+#define PCI_DOE_STATUS_DATA_OBJECT_READY 0x80000000
+#define PCI_DOE_WRITE 0x10
+#define PCI_DOE_READ 0x14
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH 0x0003ffff
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
 #endif
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index bcc4e97..8f081ed 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -108,7 +108,6 @@
   PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
   PERF_SAMPLE_WEIGHT_STRUCT = 1U << 24,
   PERF_SAMPLE_MAX = 1U << 25,
-  __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 #define PERF_SAMPLE_WEIGHT_TYPE (PERF_SAMPLE_WEIGHT | PERF_SAMPLE_WEIGHT_STRUCT)
 enum perf_branch_sample_type_shift {
@@ -130,6 +129,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT = 15,
   PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16,
   PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18,
   PERF_SAMPLE_BRANCH_MAX_SHIFT
 };
 enum perf_branch_sample_type {
@@ -151,6 +151,7 @@
   PERF_SAMPLE_BRANCH_NO_CYCLES = 1U << PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT,
   PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT,
+  PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT,
   PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT,
 };
 enum {
@@ -167,8 +168,40 @@
   PERF_BR_COND_RET = 10,
   PERF_BR_ERET = 11,
   PERF_BR_IRQ = 12,
+  PERF_BR_SERROR = 13,
+  PERF_BR_NO_TX = 14,
+  PERF_BR_EXTEND_ABI = 15,
   PERF_BR_MAX,
 };
+enum {
+  PERF_BR_SPEC_NA = 0,
+  PERF_BR_SPEC_WRONG_PATH = 1,
+  PERF_BR_NON_SPEC_CORRECT_PATH = 2,
+  PERF_BR_SPEC_CORRECT_PATH = 3,
+  PERF_BR_SPEC_MAX,
+};
+enum {
+  PERF_BR_NEW_FAULT_ALGN = 0,
+  PERF_BR_NEW_FAULT_DATA = 1,
+  PERF_BR_NEW_FAULT_INST = 2,
+  PERF_BR_NEW_ARCH_1 = 3,
+  PERF_BR_NEW_ARCH_2 = 4,
+  PERF_BR_NEW_ARCH_3 = 5,
+  PERF_BR_NEW_ARCH_4 = 6,
+  PERF_BR_NEW_ARCH_5 = 7,
+  PERF_BR_NEW_MAX,
+};
+enum {
+  PERF_BR_PRIV_UNKNOWN = 0,
+  PERF_BR_PRIV_USER = 1,
+  PERF_BR_PRIV_KERNEL = 2,
+  PERF_BR_PRIV_HV = 3,
+};
+#define PERF_BR_ARM64_FIQ PERF_BR_NEW_ARCH_1
+#define PERF_BR_ARM64_DEBUG_HALT PERF_BR_NEW_ARCH_2
+#define PERF_BR_ARM64_DEBUG_EXIT PERF_BR_NEW_ARCH_3
+#define PERF_BR_ARM64_DEBUG_INST PERF_BR_NEW_ARCH_4
+#define PERF_BR_ARM64_DEBUG_DATA PERF_BR_NEW_ARCH_5
 #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,
@@ -193,7 +226,8 @@
   PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
   PERF_FORMAT_ID = 1U << 2,
   PERF_FORMAT_GROUP = 1U << 3,
-  PERF_FORMAT_MAX = 1U << 4,
+  PERF_FORMAT_LOST = 1U << 4,
+  PERF_FORMAT_MAX = 1U << 5,
 };
 #define PERF_ATTR_SIZE_VER0 64
 #define PERF_ATTR_SIZE_VER1 72
@@ -246,7 +280,7 @@
 struct perf_event_query_bpf {
   __u32 ids_len;
   __u32 prog_cnt;
-  __u32 ids[0];
+  __u32 ids[];
 };
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
@@ -434,6 +468,8 @@
 #define PERF_MEM_LVLNUM_L2 0x02
 #define PERF_MEM_LVLNUM_L3 0x03
 #define PERF_MEM_LVLNUM_L4 0x04
+#define PERF_MEM_LVLNUM_CXL 0x09
+#define PERF_MEM_LVLNUM_IO 0x0a
 #define PERF_MEM_LVLNUM_ANY_CACHE 0x0b
 #define PERF_MEM_LVLNUM_LFB 0x0c
 #define PERF_MEM_LVLNUM_RAM 0x0d
@@ -447,6 +483,7 @@
 #define PERF_MEM_SNOOP_HITM 0x10
 #define PERF_MEM_SNOOP_SHIFT 19
 #define PERF_MEM_SNOOPX_FWD 0x01
+#define PERF_MEM_SNOOPX_PEER 0x02
 #define PERF_MEM_SNOOPX_SHIFT 38
 #define PERF_MEM_LOCK_NA 0x01
 #define PERF_MEM_LOCK_LOCKED 0x02
@@ -472,7 +509,7 @@
 struct perf_branch_entry {
   __u64 from;
   __u64 to;
-  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, reserved : 40;
+  __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31;
 };
 union perf_sample_weight {
   __u64 full;
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 1db5d32..876cb73 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -199,7 +199,7 @@
   short offoff;
   short hoff;
   __be32 hmask;
-  struct tc_u32_key keys[0];
+  struct tc_u32_key keys[];
 };
 struct tc_u32_mark {
   __u32 val;
@@ -209,7 +209,7 @@
 struct tc_u32_pcnt {
   __u64 rcnt;
   __u64 rhit;
-  __u64 kcnts[0];
+  __u64 kcnts[];
 };
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
@@ -460,6 +460,9 @@
   TCA_FLOWER_KEY_HASH,
   TCA_FLOWER_KEY_HASH_MASK,
   TCA_FLOWER_KEY_NUM_OF_VLANS,
+  TCA_FLOWER_KEY_PPPOE_SID,
+  TCA_FLOWER_KEY_PPP_PROTO,
+  TCA_FLOWER_KEY_L2TPV3_SID,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index e298b74..c31b8bb 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -924,6 +924,13 @@
 #define TCA_TAPRIO_ATTR_FLAG_TXTIME_ASSIST _BITUL(0)
 #define TCA_TAPRIO_ATTR_FLAG_FULL_OFFLOAD _BITUL(1)
 enum {
+  TCA_TAPRIO_TC_ENTRY_UNSPEC,
+  TCA_TAPRIO_TC_ENTRY_INDEX,
+  TCA_TAPRIO_TC_ENTRY_MAX_SDU,
+  __TCA_TAPRIO_TC_ENTRY_CNT,
+  TCA_TAPRIO_TC_ENTRY_MAX = (__TCA_TAPRIO_TC_ENTRY_CNT - 1)
+};
+enum {
   TCA_TAPRIO_ATTR_UNSPEC,
   TCA_TAPRIO_ATTR_PRIOMAP,
   TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST,
@@ -936,6 +943,7 @@
   TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION,
   TCA_TAPRIO_ATTR_FLAGS,
   TCA_TAPRIO_ATTR_TXTIME_DELAY,
+  TCA_TAPRIO_ATTR_TC_ENTRY,
   __TCA_TAPRIO_ATTR_MAX,
 };
 #define TCA_TAPRIO_ATTR_MAX (__TCA_TAPRIO_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/psci.h b/libc/kernel/uapi/linux/psci.h
index 31e7465..4dead17 100644
--- a/libc/kernel/uapi/linux/psci.h
+++ b/libc/kernel/uapi/linux/psci.h
@@ -39,11 +39,23 @@
 #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_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
+#define PSCI_1_0_FN_CPU_FREEZE PSCI_0_2_FN(11)
+#define PSCI_1_0_FN_CPU_DEFAULT_SUSPEND PSCI_0_2_FN(12)
+#define PSCI_1_0_FN_NODE_HW_STATE PSCI_0_2_FN(13)
 #define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
 #define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
+#define PSCI_1_0_FN_STAT_RESIDENCY PSCI_0_2_FN(16)
+#define PSCI_1_0_FN_STAT_COUNT PSCI_0_2_FN(17)
 #define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
+#define PSCI_1_1_FN_MEM_PROTECT PSCI_0_2_FN(19)
+#define PSCI_1_1_FN_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN(19)
+#define PSCI_1_0_FN64_CPU_DEFAULT_SUSPEND PSCI_0_2_FN64(12)
+#define PSCI_1_0_FN64_NODE_HW_STATE PSCI_0_2_FN64(13)
 #define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
+#define PSCI_1_0_FN64_STAT_RESIDENCY PSCI_0_2_FN64(16)
+#define PSCI_1_0_FN64_STAT_COUNT PSCI_0_2_FN64(17)
 #define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
+#define PSCI_1_1_FN64_MEM_PROTECT_CHECK_RANGE PSCI_0_2_FN64(19)
 #define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
 #define PSCI_0_2_POWER_STATE_ID_SHIFT 0
 #define PSCI_0_2_POWER_STATE_TYPE_SHIFT 16
diff --git a/libc/kernel/uapi/linux/psp-sev.h b/libc/kernel/uapi/linux/psp-sev.h
index 6c4f73d..8c9ec80 100644
--- a/libc/kernel/uapi/linux/psp-sev.h
+++ b/libc/kernel/uapi/linux/psp-sev.h
@@ -66,37 +66,37 @@
   __u32 flags;
   __u8 build;
   __u32 guest_count;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_STATUS_FLAGS_CONFIG_ES 0x0100
 struct sev_user_data_pek_csr {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pek_cert_import {
   __u64 pek_cert_address;
   __u32 pek_cert_len;
   __u64 oca_cert_address;
   __u32 oca_cert_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_pdh_cert_export {
   __u64 pdh_cert_address;
   __u32 pdh_cert_len;
   __u64 cert_chain_address;
   __u32 cert_chain_len;
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id {
   __u8 socket1[64];
   __u8 socket2[64];
-} __packed;
+} __attribute__((__packed__));
 struct sev_user_data_get_id2 {
   __u64 address;
   __u32 length;
-} __packed;
+} __attribute__((__packed__));
 struct sev_issue_cmd {
   __u32 cmd;
   __u64 data;
   __u32 error;
-} __packed;
+} __attribute__((__packed__));
 #define SEV_IOC_TYPE 'S'
 #define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
 #endif
diff --git a/libc/kernel/uapi/linux/qrtr.h b/libc/kernel/uapi/linux/qrtr.h
index c0a4c72..ee56aca 100644
--- a/libc/kernel/uapi/linux/qrtr.h
+++ b/libc/kernel/uapi/linux/qrtr.h
@@ -54,5 +54,5 @@
       __le32 port;
     } client;
   };
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/linux/raid/md_p.h b/libc/kernel/uapi/linux/raid/md_p.h
index 4ad444a..dc3084a 100644
--- a/libc/kernel/uapi/linux/raid/md_p.h
+++ b/libc/kernel/uapi/linux/raid/md_p.h
@@ -168,7 +168,7 @@
   __le32 sb_csum;
   __le32 max_dev;
   __u8 pad3[64 - 32];
-  __le16 dev_roles[0];
+  __le16 dev_roles[];
 };
 #define MD_FEATURE_BITMAP_OFFSET 1
 #define MD_FEATURE_RECOVERY_OFFSET 2
diff --git a/libc/kernel/uapi/linux/random.h b/libc/kernel/uapi/linux/random.h
index 2d3cfef..8df411b 100644
--- a/libc/kernel/uapi/linux/random.h
+++ b/libc/kernel/uapi/linux/random.h
@@ -31,7 +31,7 @@
 struct rand_pool_info {
   int entropy_count;
   int buf_size;
-  __u32 buf[0];
+  __u32 buf[];
 };
 #define GRND_NONBLOCK 0x0001
 #define GRND_RANDOM 0x0002
diff --git a/libc/kernel/uapi/linux/rkisp1-config.h b/libc/kernel/uapi/linux/rkisp1-config.h
index cea14cd..7175c23 100644
--- a/libc/kernel/uapi/linux/rkisp1-config.h
+++ b/libc/kernel/uapi/linux/rkisp1-config.h
@@ -67,6 +67,37 @@
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
 #define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
 #define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPCC_MODE_STAGE1_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_G_CENTER (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_INCL_RB_CENTER (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_G_3X3 (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_OUTPUT_MODE_STAGE1_RB_3X3 (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_SET(n) ((n) << 0)
+#define RKISP1_CIF_ISP_DPCC_SET_USE_STAGE1_USE_FIX_SET (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_GREEN_ENABLE (1U << 0)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_GREEN_ENABLE (1U << 1)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_GREEN_ENABLE (1U << 2)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_GREEN_ENABLE (1U << 3)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_GREEN_ENABLE (1U << 4)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_PG_RED_BLUE_ENABLE (1U << 8)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_LC_RED_BLUE_ENABLE (1U << 9)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RO_RED_BLUE_ENABLE (1U << 10)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RND_RED_BLUE_ENABLE (1U << 11)
+#define RKISP1_CIF_ISP_DPCC_METHODS_SET_RG_RED_BLUE_ENABLE (1U << 12)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_LINE_MAD_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_PG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RND_THRESH_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_G(v) ((v) << 0)
+#define RKISP1_CIF_ISP_DPCC_RG_FAC_RB(v) ((v) << 8)
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RO_LIMITS_n_RB(n,v) ((v) << ((n) * 4 + 2))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_G(n,v) ((v) << ((n) * 4))
+#define RKISP1_CIF_ISP_DPCC_RND_OFFS_n_RB(n,v) ((v) << ((n) * 4 + 2))
 #define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
 #define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
 #define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
diff --git a/libc/kernel/uapi/linux/romfs_fs.h b/libc/kernel/uapi/linux/romfs_fs.h
index 8e98714..bffbaf9 100644
--- a/libc/kernel/uapi/linux/romfs_fs.h
+++ b/libc/kernel/uapi/linux/romfs_fs.h
@@ -35,14 +35,14 @@
   __be32 word1;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 struct romfs_inode {
   __be32 next;
   __be32 spec;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 #define ROMFH_TYPE 7
 #define ROMFH_HRD 0
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 321e487..7201827 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -323,7 +323,7 @@
 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
 struct rtvia {
   __kernel_sa_family_t rtvia_family;
-  __u8 rtvia_addr[0];
+  __u8 rtvia_addr[];
 };
 struct rta_cacheinfo {
   __u32 rta_clntref;
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index 765d6c9..4bf2412 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -210,7 +210,7 @@
   __u16 sac_outbound_streams;
   __u16 sac_inbound_streams;
   sctp_assoc_t sac_assoc_id;
-  __u8 sac_info[0];
+  __u8 sac_info[];
 };
 enum sctp_sac_state {
   SCTP_COMM_UP,
@@ -244,7 +244,7 @@
   __u32 sre_length;
   __be16 sre_error;
   sctp_assoc_t sre_assoc_id;
-  __u8 sre_data[0];
+  __u8 sre_data[];
 };
 struct sctp_send_failed {
   __u16 ssf_type;
@@ -253,7 +253,7 @@
   __u32 ssf_error;
   struct sctp_sndrcvinfo ssf_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 struct sctp_send_failed_event {
   __u16 ssf_type;
@@ -262,7 +262,7 @@
   __u32 ssf_error;
   struct sctp_sndinfo ssfe_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 enum sctp_ssf_flags {
   SCTP_DATA_UNSENT,
@@ -570,7 +570,7 @@
 struct sctp_getaddrs {
   sctp_assoc_t assoc_id;
   __u32 addr_num;
-  __u8 addrs[0];
+  __u8 addrs[];
 };
 struct sctp_assoc_stats {
   sctp_assoc_t sas_assoc_id;
diff --git a/libc/kernel/uapi/linux/sed-opal.h b/libc/kernel/uapi/linux/sed-opal.h
index a20197a..f7ac9bd 100644
--- a/libc/kernel/uapi/linux/sed-opal.h
+++ b/libc/kernel/uapi/linux/sed-opal.h
@@ -112,6 +112,16 @@
   __u64 flags;
   __u64 priv;
 };
+#define OPAL_FL_SUPPORTED 0x00000001
+#define OPAL_FL_LOCKING_SUPPORTED 0x00000002
+#define OPAL_FL_LOCKING_ENABLED 0x00000004
+#define OPAL_FL_LOCKED 0x00000008
+#define OPAL_FL_MBR_ENABLED 0x00000010
+#define OPAL_FL_MBR_DONE 0x00000020
+struct opal_status {
+  __u32 flags;
+  __u32 reserved;
+};
 #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
 #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
 #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -128,4 +138,5 @@
 #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
 #define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
+#define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
 #endif
diff --git a/libc/kernel/uapi/linux/seg6.h b/libc/kernel/uapi/linux/seg6.h
index f180485..b8206cc 100644
--- a/libc/kernel/uapi/linux/seg6.h
+++ b/libc/kernel/uapi/linux/seg6.h
@@ -28,7 +28,7 @@
   __u8 first_segment;
   __u8 flags;
   __u16 tag;
-  struct in6_addr segments[0];
+  struct in6_addr segments[];
 };
 #define SR6_FLAG1_PROTECTED (1 << 6)
 #define SR6_FLAG1_OAM (1 << 5)
diff --git a/libc/kernel/uapi/linux/seg6_iptunnel.h b/libc/kernel/uapi/linux/seg6_iptunnel.h
index 1c1ad83..19d8ba4 100644
--- a/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -27,12 +27,14 @@
 #define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
 struct seg6_iptunnel_encap {
   int mode;
-  struct ipv6_sr_hdr srh[0];
+  struct ipv6_sr_hdr srh[];
 };
 #define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
 enum {
   SEG6_IPTUN_MODE_INLINE,
   SEG6_IPTUN_MODE_ENCAP,
   SEG6_IPTUN_MODE_L2ENCAP,
+  SEG6_IPTUN_MODE_ENCAP_RED,
+  SEG6_IPTUN_MODE_L2ENCAP_RED,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/seg6_local.h b/libc/kernel/uapi/linux/seg6_local.h
index 61a8d97..4d062e8 100644
--- a/libc/kernel/uapi/linux/seg6_local.h
+++ b/libc/kernel/uapi/linux/seg6_local.h
@@ -31,6 +31,7 @@
   SEG6_LOCAL_BPF,
   SEG6_LOCAL_VRFTABLE,
   SEG6_LOCAL_COUNTERS,
+  SEG6_LOCAL_FLAVORS,
   __SEG6_LOCAL_MAX,
 };
 #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
@@ -71,4 +72,21 @@
   __SEG6_LOCAL_CNT_MAX,
 };
 #define SEG6_LOCAL_CNT_MAX (__SEG6_LOCAL_CNT_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_UNSPEC,
+  SEG6_LOCAL_FLV_OPERATION,
+  SEG6_LOCAL_FLV_LCBLOCK_BITS,
+  SEG6_LOCAL_FLV_LCNODE_FN_BITS,
+  __SEG6_LOCAL_FLV_MAX,
+};
+#define SEG6_LOCAL_FLV_MAX (__SEG6_LOCAL_FLV_MAX - 1)
+enum {
+  SEG6_LOCAL_FLV_OP_UNSPEC,
+  SEG6_LOCAL_FLV_OP_PSP,
+  SEG6_LOCAL_FLV_OP_USP,
+  SEG6_LOCAL_FLV_OP_USD,
+  SEG6_LOCAL_FLV_OP_NEXT_CSID,
+  __SEG6_LOCAL_FLV_OP_MAX
+};
+#define SEG6_LOCAL_FLV_OP_MAX (__SEG6_LOCAL_FLV_OP_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/serial.h b/libc/kernel/uapi/linux/serial.h
index e4e903d..5a83c62 100644
--- a/libc/kernel/uapi/linux/serial.h
+++ b/libc/kernel/uapi/linux/serial.h
@@ -96,9 +96,20 @@
 #define SER_RS485_RTS_AFTER_SEND (1 << 2)
 #define SER_RS485_RX_DURING_TX (1 << 4)
 #define SER_RS485_TERMINATE_BUS (1 << 5)
+#define SER_RS485_ADDRB (1 << 6)
+#define SER_RS485_ADDR_RECV (1 << 7)
+#define SER_RS485_ADDR_DEST (1 << 8)
   __u32 delay_rts_before_send;
   __u32 delay_rts_after_send;
-  __u32 padding[5];
+  union {
+    __u32 padding[5];
+    struct {
+      __u8 addr_recv;
+      __u8 addr_dest;
+      __u8 padding0[2];
+      __u32 padding1[4];
+    };
+  };
 };
 struct serial_iso7816 {
   __u32 flags;
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index b99c7d4..1e04429 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -69,8 +69,6 @@
 #define PORT_IMX 62
 #define PORT_MPSC 63
 #define PORT_TXX9 64
-#define PORT_VR41XX_SIU 65
-#define PORT_VR41XX_DSIU 66
 #define PORT_S3C2400 67
 #define PORT_M32R_SIO 68
 #define PORT_JSM 69
diff --git a/libc/kernel/uapi/linux/serial_reg.h b/libc/kernel/uapi/linux/serial_reg.h
index b6648f8..e41e649 100644
--- a/libc/kernel/uapi/linux/serial_reg.h
+++ b/libc/kernel/uapi/linux/serial_reg.h
@@ -99,7 +99,7 @@
 #define UART_LSR_PE 0x04
 #define UART_LSR_OE 0x02
 #define UART_LSR_DR 0x01
-#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE | UART_LSR_OE)
 #define UART_MSR 6
 #define UART_MSR_DCD 0x80
 #define UART_MSR_RI 0x40
@@ -109,7 +109,7 @@
 #define UART_MSR_TERI 0x04
 #define UART_MSR_DDSR 0x02
 #define UART_MSR_DCTS 0x01
-#define UART_MSR_ANY_DELTA 0x0F
+#define UART_MSR_ANY_DELTA (UART_MSR_DDCD | UART_MSR_TERI | UART_MSR_DDSR | UART_MSR_DCTS)
 #define UART_SCR 7
 #define UART_DLL 0
 #define UART_DLM 1
diff --git a/libc/kernel/uapi/linux/smc.h b/libc/kernel/uapi/linux/smc.h
index be6b71f..200c9b6 100644
--- a/libc/kernel/uapi/linux/smc.h
+++ b/libc/kernel/uapi/linux/smc.h
@@ -112,6 +112,7 @@
   SMC_NLA_LGR_R_V2,
   SMC_NLA_LGR_R_NET_COOKIE,
   SMC_NLA_LGR_R_PAD,
+  SMC_NLA_LGR_R_BUF_TYPE,
   __SMC_NLA_LGR_R_MAX,
   SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index a503a7e..d98f39e 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -305,6 +305,8 @@
   LINUX_MIB_TLSRXDEVICE,
   LINUX_MIB_TLSDECRYPTERROR,
   LINUX_MIB_TLSRXDEVICERESYNC,
+  LINUX_MIB_TLSDECRYPTRETRY,
+  LINUX_MIB_TLSRXNOPADVIOL,
   __LINUX_MIB_TLSMAX
 };
 #endif
diff --git a/libc/kernel/uapi/linux/stat.h b/libc/kernel/uapi/linux/stat.h
index a15b9b5..89304ce 100644
--- a/libc/kernel/uapi/linux/stat.h
+++ b/libc/kernel/uapi/linux/stat.h
@@ -78,7 +78,8 @@
   __u32 stx_dev_major;
   __u32 stx_dev_minor;
   __u64 stx_mnt_id;
-  __u64 __spare2;
+  __u32 stx_dio_mem_align;
+  __u32 stx_dio_offset_align;
   __u64 __spare3[12];
 };
 #define STATX_TYPE 0x00000001U
@@ -95,6 +96,7 @@
 #define STATX_BASIC_STATS 0x000007ffU
 #define STATX_BTIME 0x00000800U
 #define STATX_MNT_ID 0x00001000U
+#define STATX_DIOALIGN 0x00002000U
 #define STATX__RESERVED 0x80000000U
 #define STATX_ALL 0x00000fffU
 #define STATX_ATTR_COMPRESSED 0x00000004
diff --git a/libc/kernel/uapi/linux/stm.h b/libc/kernel/uapi/linux/stm.h
index 1c7f7f3..b1453f7 100644
--- a/libc/kernel/uapi/linux/stm.h
+++ b/libc/kernel/uapi/linux/stm.h
@@ -28,7 +28,7 @@
   __u16 width;
   __u16 __reserved_0;
   __u32 __reserved_1;
-  char id[0];
+  char id[];
 };
 #define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
 #define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index ae9c2ba..ff17f7c 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -516,6 +516,7 @@
   NET_NEIGH_GC_THRESH3 = 16,
   NET_NEIGH_RETRANS_TIME_MS = 17,
   NET_NEIGH_REACHABLE_TIME_MS = 18,
+  NET_NEIGH_INTERVAL_PROBE_TIME_MS = 19,
 };
 enum {
   NET_DCCP_DEFAULT = 1,
diff --git a/libc/kernel/uapi/linux/target_core_user.h b/libc/kernel/uapi/linux/target_core_user.h
index dcba00e..83e155e 100644
--- a/libc/kernel/uapi/linux/target_core_user.h
+++ b/libc/kernel/uapi/linux/target_core_user.h
@@ -34,7 +34,7 @@
   __u32 cmdr_size;
   __u32 cmd_head;
   __u32 cmd_tail __attribute__((__aligned__(ALIGN_SIZE)));
-} __packed;
+} __attribute__((__packed__));
 enum tcmu_opcode {
   TCMU_OP_PAD = 0,
   TCMU_OP_CMD,
@@ -48,7 +48,7 @@
 #define TCMU_UFLAG_READ_LEN 0x2
 #define TCMU_UFLAG_KEEP_BUF 0x4
   __u8 uflags;
-} __packed;
+} __attribute__((__packed__));
 #define TCMU_OP_MASK 0x7
 #define TCMU_SENSE_BUFFERSIZE 96
 struct tcmu_cmd_entry {
@@ -71,7 +71,7 @@
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
     } rsp;
   };
-} __packed;
+} __attribute__((__packed__));
 struct tcmu_tmr_entry {
   struct tcmu_cmd_entry_hdr hdr;
 #define TCMU_TMR_UNKNOWN 0
@@ -89,8 +89,8 @@
   __u32 cmd_cnt;
   __u64 __pad3;
   __u64 __pad4;
-  __u16 cmd_ids[0];
-} __packed;
+  __u16 cmd_ids[];
+} __attribute__((__packed__));
 #define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 enum tcmu_genl_cmd {
   TCMU_CMD_UNSPEC,
diff --git a/libc/kernel/uapi/linux/tls.h b/libc/kernel/uapi/linux/tls.h
index 4501cda..fcab74b 100644
--- a/libc/kernel/uapi/linux/tls.h
+++ b/libc/kernel/uapi/linux/tls.h
@@ -22,6 +22,7 @@
 #define TLS_TX 1
 #define TLS_RX 2
 #define TLS_TX_ZEROCOPY_RO 3
+#define TLS_RX_EXPECT_NO_PAD 4
 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
 #define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
@@ -67,6 +68,18 @@
 #define TLS_CIPHER_SM4_CCM_SALT_SIZE 4
 #define TLS_CIPHER_SM4_CCM_TAG_SIZE 16
 #define TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128 57
+#define TLS_CIPHER_ARIA_GCM_128_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_128_KEY_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_128_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256 58
+#define TLS_CIPHER_ARIA_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_ARIA_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_ARIA_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_ARIA_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -115,6 +128,20 @@
   unsigned char salt[TLS_CIPHER_SM4_CCM_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_SM4_CCM_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_aria_gcm_128 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_128_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_128_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_128_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_128_REC_SEQ_SIZE];
+};
+struct tls12_crypto_info_aria_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_ARIA_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_ARIA_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_ARIA_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_ARIA_GCM_256_REC_SEQ_SIZE];
+};
 enum {
   TLS_INFO_UNSPEC,
   TLS_INFO_VERSION,
@@ -122,6 +149,7 @@
   TLS_INFO_TXCONF,
   TLS_INFO_RXCONF,
   TLS_INFO_ZC_RO_TX,
+  TLS_INFO_RX_NO_PAD,
   __TLS_INFO_MAX,
 };
 #define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/libc/kernel/uapi/linux/ublk_cmd.h b/libc/kernel/uapi/linux/ublk_cmd.h
new file mode 100644
index 0000000..8c9cbeb
--- /dev/null
+++ b/libc/kernel/uapi/linux/ublk_cmd.h
@@ -0,0 +1,127 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 USER_BLK_DRV_CMD_INC_H
+#define USER_BLK_DRV_CMD_INC_H
+#include <linux/types.h>
+#define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
+#define UBLK_CMD_GET_DEV_INFO 0x02
+#define UBLK_CMD_ADD_DEV 0x04
+#define UBLK_CMD_DEL_DEV 0x05
+#define UBLK_CMD_START_DEV 0x06
+#define UBLK_CMD_STOP_DEV 0x07
+#define UBLK_CMD_SET_PARAMS 0x08
+#define UBLK_CMD_GET_PARAMS 0x09
+#define UBLK_CMD_START_USER_RECOVERY 0x10
+#define UBLK_CMD_END_USER_RECOVERY 0x11
+#define UBLK_IO_FETCH_REQ 0x20
+#define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
+#define UBLK_IO_NEED_GET_DATA 0x22
+#define UBLK_IO_RES_OK 0
+#define UBLK_IO_RES_NEED_GET_DATA 1
+#define UBLK_IO_RES_ABORT (- ENODEV)
+#define UBLKSRV_CMD_BUF_OFFSET 0
+#define UBLKSRV_IO_BUF_OFFSET 0x80000000
+#define UBLK_MAX_QUEUE_DEPTH 4096
+#define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
+#define UBLK_F_URING_CMD_COMP_IN_TASK (1ULL << 1)
+#define UBLK_F_NEED_GET_DATA (1UL << 2)
+#define UBLK_F_USER_RECOVERY (1UL << 3)
+#define UBLK_F_USER_RECOVERY_REISSUE (1UL << 4)
+#define UBLK_S_DEV_DEAD 0
+#define UBLK_S_DEV_LIVE 1
+#define UBLK_S_DEV_QUIESCED 2
+struct ublksrv_ctrl_cmd {
+  __u32 dev_id;
+  __u16 queue_id;
+  __u16 len;
+  __u64 addr;
+  __u64 data[2];
+};
+struct ublksrv_ctrl_dev_info {
+  __u16 nr_hw_queues;
+  __u16 queue_depth;
+  __u16 state;
+  __u16 pad0;
+  __u32 max_io_buf_bytes;
+  __u32 dev_id;
+  __s32 ublksrv_pid;
+  __u32 pad1;
+  __u64 flags;
+  __u64 ublksrv_flags;
+  __u64 reserved0;
+  __u64 reserved1;
+  __u64 reserved2;
+};
+#define UBLK_IO_OP_READ 0
+#define UBLK_IO_OP_WRITE 1
+#define UBLK_IO_OP_FLUSH 2
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
+#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
+#define UBLK_IO_F_FAILFAST_DRIVER (1U << 10)
+#define UBLK_IO_F_META (1U << 11)
+#define UBLK_IO_F_FUA (1U << 13)
+#define UBLK_IO_F_NOUNMAP (1U << 15)
+#define UBLK_IO_F_SWAP (1U << 16)
+struct ublksrv_io_desc {
+  __u32 op_flags;
+  __u32 nr_sectors;
+  __u64 start_sector;
+  __u64 addr;
+};
+struct ublksrv_io_cmd {
+  __u16 q_id;
+  __u16 tag;
+  __s32 result;
+  __u64 addr;
+};
+struct ublk_param_basic {
+#define UBLK_ATTR_READ_ONLY (1 << 0)
+#define UBLK_ATTR_ROTATIONAL (1 << 1)
+#define UBLK_ATTR_VOLATILE_CACHE (1 << 2)
+#define UBLK_ATTR_FUA (1 << 3)
+  __u32 attrs;
+  __u8 logical_bs_shift;
+  __u8 physical_bs_shift;
+  __u8 io_opt_shift;
+  __u8 io_min_shift;
+  __u32 max_sectors;
+  __u32 chunk_sectors;
+  __u64 dev_sectors;
+  __u64 virt_boundary_mask;
+};
+struct ublk_param_discard {
+  __u32 discard_alignment;
+  __u32 discard_granularity;
+  __u32 max_discard_sectors;
+  __u32 max_write_zeroes_sectors;
+  __u16 max_discard_segments;
+  __u16 reserved0;
+};
+struct ublk_params {
+  __u32 len;
+#define UBLK_PARAM_TYPE_BASIC (1 << 0)
+#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
+  __u32 types;
+  struct ublk_param_basic basic;
+  struct ublk_param_discard discard;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/usb/audio.h b/libc/kernel/uapi/linux/usb/audio.h
index 7d36157..bfda540 100644
--- a/libc/kernel/uapi/linux/usb/audio.h
+++ b/libc/kernel/uapi/linux/usb/audio.h
@@ -186,7 +186,7 @@
   __u8 bUnitID;
   __u8 bSourceID;
   __u8 bControlSize;
-  __u8 bmaControls[0];
+  __u8 bmaControls[];
 } __attribute__((packed));
 struct uac_processing_unit_descriptor {
   __u8 bLength;
diff --git a/libc/kernel/uapi/linux/usb/cdc.h b/libc/kernel/uapi/linux/usb/cdc.h
index 59c9488..bbfc4db 100644
--- a/libc/kernel/uapi/linux/usb/cdc.h
+++ b/libc/kernel/uapi/linux/usb/cdc.h
@@ -131,7 +131,7 @@
   __u8 bDescriptorType;
   __u8 bDescriptorSubType;
   __u8 bGuidDescriptorType;
-  __u8 bDetailData[0];
+  __u8 bDetailData[];
 } __attribute__((packed));
 struct usb_cdc_obex_desc {
   __u8 bLength;
@@ -201,6 +201,8 @@
 #define USB_CDC_SPACE_PARITY 4
   __u8 bDataBits;
 } __attribute__((packed));
+#define USB_CDC_CTRL_DTR (1 << 0)
+#define USB_CDC_CTRL_RTS (1 << 1)
 #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)
@@ -217,6 +219,13 @@
   __le16 wIndex;
   __le16 wLength;
 } __attribute__((packed));
+#define USB_CDC_SERIAL_STATE_DCD (1 << 0)
+#define USB_CDC_SERIAL_STATE_DSR (1 << 1)
+#define USB_CDC_SERIAL_STATE_BREAK (1 << 2)
+#define USB_CDC_SERIAL_STATE_RING_SIGNAL (1 << 3)
+#define USB_CDC_SERIAL_STATE_FRAMING (1 << 4)
+#define USB_CDC_SERIAL_STATE_PARITY (1 << 5)
+#define USB_CDC_SERIAL_STATE_OVERRUN (1 << 6)
 struct usb_cdc_speed_change {
   __le32 DLBitRRate;
   __le32 ULBitRate;
@@ -267,7 +276,7 @@
   __le32 dwSignature;
   __le16 wLength;
   __le16 wNextNdpIndex;
-  struct usb_cdc_ncm_dpe16 dpe16[0];
+  struct usb_cdc_ncm_dpe16 dpe16[];
 } __attribute__((packed));
 struct usb_cdc_ncm_dpe32 {
   __le32 dwDatagramIndex;
@@ -279,7 +288,7 @@
   __le16 wReserved6;
   __le32 dwNextNdpIndex;
   __le32 dwReserved12;
-  struct usb_cdc_ncm_dpe32 dpe32[0];
+  struct usb_cdc_ncm_dpe32 dpe32[];
 } __attribute__((packed));
 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
diff --git a/libc/kernel/uapi/linux/usb/ch9.h b/libc/kernel/uapi/linux/usb/ch9.h
index f1dade9..49eb5fa 100644
--- a/libc/kernel/uapi/linux/usb/ch9.h
+++ b/libc/kernel/uapi/linux/usb/ch9.h
@@ -324,7 +324,7 @@
   __u8 bDescriptorType;
   __u8 tTKID[3];
   __u8 bReserved;
-  __u8 bKeyData[0];
+  __u8 bKeyData[];
 } __attribute__((packed));
 struct usb_encryption_descriptor {
   __u8 bLength;
diff --git a/libc/kernel/uapi/linux/usb/raw_gadget.h b/libc/kernel/uapi/linux/usb/raw_gadget.h
index 70d5a26..8b60c8d 100644
--- a/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -35,7 +35,7 @@
 struct usb_raw_event {
   __u32 type;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_IO_FLAGS_ZERO 0x0001
 #define USB_RAW_IO_FLAGS_MASK 0x0001
@@ -43,7 +43,7 @@
   __u16 ep;
   __u16 flags;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_EPS_NUM_MAX 30
 #define USB_RAW_EP_NAME_MAX 16
diff --git a/libc/kernel/uapi/linux/usbdevice_fs.h b/libc/kernel/uapi/linux/usbdevice_fs.h
index 7936ad9..5fef522 100644
--- a/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -91,7 +91,7 @@
   int error_count;
   unsigned int signr;
   void __user * usercontext;
-  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+  struct usbdevfs_iso_packet_desc iso_frame_desc[];
 };
 struct usbdevfs_ioctl {
   int ifno;
@@ -121,7 +121,7 @@
 struct usbdevfs_streams {
   unsigned int num_streams;
   unsigned int num_eps;
-  unsigned char eps[0];
+  unsigned char eps[];
 };
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
 #define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
diff --git a/libc/kernel/uapi/linux/usbip.h b/libc/kernel/uapi/linux/usbip.h
index ae18347..b0c1067 100644
--- a/libc/kernel/uapi/linux/usbip.h
+++ b/libc/kernel/uapi/linux/usbip.h
@@ -27,4 +27,21 @@
   VDEV_ST_USED,
   VDEV_ST_ERROR
 };
+#define USBIP_URB_SHORT_NOT_OK 0x0001
+#define USBIP_URB_ISO_ASAP 0x0002
+#define USBIP_URB_NO_TRANSFER_DMA_MAP 0x0004
+#define USBIP_URB_ZERO_PACKET 0x0040
+#define USBIP_URB_NO_INTERRUPT 0x0080
+#define USBIP_URB_FREE_BUFFER 0x0100
+#define USBIP_URB_DIR_IN 0x0200
+#define USBIP_URB_DIR_OUT 0
+#define USBIP_URB_DIR_MASK USBIP_URB_DIR_IN
+#define USBIP_URB_DMA_MAP_SINGLE 0x00010000
+#define USBIP_URB_DMA_MAP_PAGE 0x00020000
+#define USBIP_URB_DMA_MAP_SG 0x00040000
+#define USBIP_URB_MAP_LOCAL 0x00080000
+#define USBIP_URB_SETUP_MAP_SINGLE 0x00100000
+#define USBIP_URB_SETUP_MAP_LOCAL 0x00200000
+#define USBIP_URB_DMA_SG_COMBINED 0x00400000
+#define USBIP_URB_ALIGNED_TEMP_BUFFER 0x00800000
 #endif
diff --git a/libc/kernel/uapi/linux/userfaultfd.h b/libc/kernel/uapi/linux/userfaultfd.h
index 46d7472..09e0d80 100644
--- a/libc/kernel/uapi/linux/userfaultfd.h
+++ b/libc/kernel/uapi/linux/userfaultfd.h
@@ -19,6 +19,8 @@
 #ifndef _LINUX_USERFAULTFD_H
 #define _LINUX_USERFAULTFD_H
 #include <linux/types.h>
+#define USERFAULTFD_IOC 0xAA
+#define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
 #define UFFD_API ((__u64) 0xAA)
 #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
 #define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
@@ -73,7 +75,7 @@
       __u64 reserved3;
     } reserved;
   } arg;
-} __packed;
+} __attribute__((__packed__));
 #define UFFD_EVENT_PAGEFAULT 0x12
 #define UFFD_EVENT_FORK 0x13
 #define UFFD_EVENT_REMAP 0x14
diff --git a/libc/kernel/uapi/linux/uvcvideo.h b/libc/kernel/uapi/linux/uvcvideo.h
index 719147a..46528a9 100644
--- a/libc/kernel/uapi/linux/uvcvideo.h
+++ b/libc/kernel/uapi/linux/uvcvideo.h
@@ -68,5 +68,5 @@
   __u8 length;
   __u8 flags;
   __u8 buf[];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 30a0553..276ecaa 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -120,6 +120,7 @@
 #define V4L2_CID_USER_CCS_BASE (V4L2_CID_USER_BASE + 0x10f0)
 #define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
 #define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
+#define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
 #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
 #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
@@ -1331,6 +1332,204 @@
   __u8 chroma_intra_quantiser_matrix[64];
   __u8 chroma_non_intra_quantiser_matrix[64];
 };
+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400)
+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401)
+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402)
+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403)
+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404)
+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
+enum v4l2_stateless_hevc_decode_mode {
+  V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+};
+enum v4l2_stateless_hevc_start_code {
+  V4L2_STATELESS_HEVC_START_CODE_NONE,
+  V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+};
+#define V4L2_HEVC_SLICE_TYPE_B 0
+#define V4L2_HEVC_SLICE_TYPE_P 1
+#define V4L2_HEVC_SLICE_TYPE_I 2
+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0)
+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1)
+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3)
+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4)
+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5)
+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6)
+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7)
+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8)
+struct v4l2_ctrl_hevc_sps {
+  __u8 video_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u16 pic_width_in_luma_samples;
+  __u16 pic_height_in_luma_samples;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 sps_max_dec_pic_buffering_minus1;
+  __u8 sps_max_num_reorder_pics;
+  __u8 sps_max_latency_increase_plus1;
+  __u8 log2_min_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_luma_coding_block_size;
+  __u8 log2_min_luma_transform_block_size_minus2;
+  __u8 log2_diff_max_min_luma_transform_block_size;
+  __u8 max_transform_hierarchy_depth_inter;
+  __u8 max_transform_hierarchy_depth_intra;
+  __u8 pcm_sample_bit_depth_luma_minus1;
+  __u8 pcm_sample_bit_depth_chroma_minus1;
+  __u8 log2_min_pcm_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_pcm_luma_coding_block_size;
+  __u8 num_short_term_ref_pic_sets;
+  __u8 num_long_term_ref_pics_sps;
+  __u8 chroma_format_idc;
+  __u8 sps_max_sub_layers_minus1;
+  __u8 reserved[6];
+  __u64 flags;
+};
+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0)
+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1)
+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2)
+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3)
+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4)
+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5)
+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6)
+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9)
+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10)
+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11)
+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12)
+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13)
+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15)
+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16)
+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17)
+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20)
+struct v4l2_ctrl_hevc_pps {
+  __u8 pic_parameter_set_id;
+  __u8 num_extra_slice_header_bits;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __s8 init_qp_minus26;
+  __u8 diff_cu_qp_delta_depth;
+  __s8 pps_cb_qp_offset;
+  __s8 pps_cr_qp_offset;
+  __u8 num_tile_columns_minus1;
+  __u8 num_tile_rows_minus1;
+  __u8 column_width_minus1[20];
+  __u8 row_height_minus1[22];
+  __s8 pps_beta_offset_div2;
+  __s8 pps_tc_offset_div2;
+  __u8 log2_parallel_merge_level_minus2;
+  __u8 reserved;
+  __u64 flags;
+};
+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12
+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
+struct v4l2_hevc_dpb_entry {
+  __u64 timestamp;
+  __u8 flags;
+  __u8 field_pic;
+  __u16 reserved;
+  __s32 pic_order_cnt_val;
+};
+struct v4l2_hevc_pred_weight_table {
+  __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __u8 luma_log2_weight_denom;
+  __s8 delta_chroma_log2_weight_denom;
+};
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9)
+struct v4l2_ctrl_hevc_slice_params {
+  __u32 bit_size;
+  __u32 data_byte_offset;
+  __u32 num_entry_point_offsets;
+  __u8 nal_unit_type;
+  __u8 nuh_temporal_id_plus1;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __s32 slice_pic_order_cnt;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 collocated_ref_idx;
+  __u8 five_minus_max_num_merge_cand;
+  __s8 slice_qp_delta;
+  __s8 slice_cb_qp_offset;
+  __s8 slice_cr_qp_offset;
+  __s8 slice_act_y_qp_offset;
+  __s8 slice_act_cb_qp_offset;
+  __s8 slice_act_cr_qp_offset;
+  __s8 slice_beta_offset_div2;
+  __s8 slice_tc_offset_div2;
+  __u8 pic_struct;
+  __u8 reserved0[3];
+  __u32 slice_segment_addr;
+  __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  struct v4l2_hevc_pred_weight_table pred_weight_table;
+  __u8 reserved1[2];
+  __u64 flags;
+};
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4
+struct v4l2_ctrl_hevc_decode_params {
+  __s32 pic_order_cnt_val;
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  __u8 num_active_dpb_entries;
+  __u8 num_poc_st_curr_before;
+  __u8 num_poc_st_curr_after;
+  __u8 num_poc_lt_curr;
+  __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 reserved[4];
+  struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u64 flags;
+};
+struct v4l2_ctrl_hevc_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+  __u8 scaling_list_16x16[6][64];
+  __u8 scaling_list_32x32[2][64];
+  __u8 scaling_list_dc_coef_16x16[6];
+  __u8 scaling_list_dc_coef_32x32[2];
+};
 #define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
 #define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
 #define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
diff --git a/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 009f9a6..777a2bb 100644
--- a/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -157,7 +157,7 @@
       __u32 offset;
     } page_list;
   } u;
-} __packed;
+} __attribute__((__packed__));
 struct vmmdev_hgcm_function_parameter64 {
   enum vmmdev_hgcm_function_parameter_type type;
   union {
@@ -169,13 +169,13 @@
         __u64 phys_addr;
         __u64 linear_addr;
       } u;
-    } __packed pointer;
+    } __attribute__((__packed__)) pointer;
     struct {
       __u32 size;
       __u32 offset;
     } page_list;
-  } __packed u;
-} __packed;
+  } __attribute__((__packed__)) u;
+} __attribute__((__packed__));
 #if __BITS_PER_LONG == 64
 #define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
 #else
diff --git a/libc/kernel/uapi/linux/vdpa.h b/libc/kernel/uapi/linux/vdpa.h
index 8b3be00..ed61cdd 100644
--- a/libc/kernel/uapi/linux/vdpa.h
+++ b/libc/kernel/uapi/linux/vdpa.h
@@ -52,6 +52,8 @@
   VDPA_ATTR_DEV_QUEUE_INDEX,
   VDPA_ATTR_DEV_VENDOR_ATTR_NAME,
   VDPA_ATTR_DEV_VENDOR_ATTR_VALUE,
+  VDPA_ATTR_DEV_FEATURES,
+  VDPA_ATTR_VDPA_DEV_SUPPORTED_FEATURES,
   VDPA_ATTR_MAX,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/vduse.h b/libc/kernel/uapi/linux/vduse.h
index 2dc8c82..f0b6d6b 100644
--- a/libc/kernel/uapi/linux/vduse.h
+++ b/libc/kernel/uapi/linux/vduse.h
@@ -90,6 +90,22 @@
 };
 #define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
 #define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+struct vduse_iova_umem {
+  __u64 uaddr;
+  __u64 iova;
+  __u64 size;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
+#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
+struct vduse_iova_info {
+  __u64 start;
+  __u64 last;
+#define VDUSE_IOVA_CAP_UMEM (1 << 0)
+  __u64 capability;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
 enum vduse_req_type {
   VDUSE_GET_VQ_STATE,
   VDUSE_SET_STATUS,
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 62874da..ab95caf 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 332544
+#define LINUX_VERSION_CODE 393472
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
-#define LINUX_VERSION_MAJOR 5
-#define LINUX_VERSION_PATCHLEVEL 19
+#define LINUX_VERSION_MAJOR 6
+#define LINUX_VERSION_PATCHLEVEL 1
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index 8075408..dffa136 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -304,6 +304,32 @@
   VFIO_DEVICE_STATE_RESUMING = 4,
   VFIO_DEVICE_STATE_RUNNING_P2P = 5,
 };
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY 3
+struct vfio_device_low_power_entry_with_wakeup {
+  __s32 wakeup_eventfd;
+  __u32 reserved;
+};
+#define VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP 4
+#define VFIO_DEVICE_FEATURE_LOW_POWER_EXIT 5
+struct vfio_device_feature_dma_logging_control {
+  __aligned_u64 page_size;
+  __u32 num_ranges;
+  __u32 __reserved;
+  __aligned_u64 ranges;
+};
+struct vfio_device_feature_dma_logging_range {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_START 6
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_STOP 7
+struct vfio_device_feature_dma_logging_report {
+  __aligned_u64 iova;
+  __aligned_u64 length;
+  __aligned_u64 page_size;
+  __aligned_u64 bitmap;
+};
+#define VFIO_DEVICE_FEATURE_DMA_LOGGING_REPORT 8
 struct vfio_iommu_type1_info {
   __u32 argsz;
   __u32 flags;
diff --git a/libc/kernel/uapi/linux/vfio_ccw.h b/libc/kernel/uapi/linux/vfio_ccw.h
index a6defc5..7bf08f5 100644
--- a/libc/kernel/uapi/linux/vfio_ccw.h
+++ b/libc/kernel/uapi/linux/vfio_ccw.h
@@ -27,19 +27,19 @@
 #define IRB_AREA_SIZE 96
   __u8 irb_area[IRB_AREA_SIZE];
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 #define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
 #define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
 struct ccw_cmd_region {
   __u32 command;
   __u32 ret_code;
-} __packed;
+} __attribute__((__packed__));
 struct ccw_schib_region {
 #define SCHIB_AREA_SIZE 52
   __u8 schib_area[SCHIB_AREA_SIZE];
-} __packed;
+} __attribute__((__packed__));
 struct ccw_crw_region {
   __u32 crw;
   __u32 pad;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/linux/vfio_zdev.h b/libc/kernel/uapi/linux/vfio_zdev.h
index c678e9a..1c3a943 100644
--- a/libc/kernel/uapi/linux/vfio_zdev.h
+++ b/libc/kernel/uapi/linux/vfio_zdev.h
@@ -29,6 +29,7 @@
   __u16 fmb_length;
   __u8 pft;
   __u8 gid;
+  __u32 fh;
 };
 struct vfio_device_info_cap_zpci_group {
   struct vfio_info_cap_header header;
@@ -40,6 +41,8 @@
   __u16 noi;
   __u16 maxstbl;
   __u8 version;
+  __u8 reserved;
+  __u16 imaxstbl;
 };
 struct vfio_device_info_cap_zpci_util {
   struct vfio_info_cap_header header;
diff --git a/libc/kernel/uapi/linux/vhost.h b/libc/kernel/uapi/linux/vhost.h
index 3bf1372..e5b1327 100644
--- a/libc/kernel/uapi/linux/vhost.h
+++ b/libc/kernel/uapi/linux/vhost.h
@@ -68,4 +68,5 @@
 #define VHOST_VDPA_GET_AS_NUM _IOR(VHOST_VIRTIO, 0x7A, unsigned int)
 #define VHOST_VDPA_GET_VRING_GROUP _IOWR(VHOST_VIRTIO, 0x7B, struct vhost_vring_state)
 #define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
+#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
 #endif
diff --git a/libc/kernel/uapi/linux/vhost_types.h b/libc/kernel/uapi/linux/vhost_types.h
index 772a1cc..32efa85 100644
--- a/libc/kernel/uapi/linux/vhost_types.h
+++ b/libc/kernel/uapi/linux/vhost_types.h
@@ -82,7 +82,7 @@
 struct vhost_memory {
   __u32 nregions;
   __u32 padding;
-  struct vhost_memory_region regions[0];
+  struct vhost_memory_region regions[];
 };
 #define VHOST_SCSI_ABI_VERSION 1
 struct vhost_scsi_target {
@@ -94,7 +94,7 @@
 struct vhost_vdpa_config {
   __u32 off;
   __u32 len;
-  __u8 buf[0];
+  __u8 buf[];
 };
 struct vhost_vdpa_iova_range {
   __u64 first;
@@ -105,4 +105,5 @@
 #define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
 #define VHOST_BACKEND_F_IOTLB_BATCH 0x2
 #define VHOST_BACKEND_F_IOTLB_ASID 0x3
+#define VHOST_BACKEND_F_SUSPEND 0x4
 #endif
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index d4107bc..3d8dd72 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -185,7 +185,6 @@
 #define V4L2_CAP_SDR_OUTPUT 0x00400000
 #define V4L2_CAP_META_CAPTURE 0x00800000
 #define V4L2_CAP_READWRITE 0x01000000
-#define V4L2_CAP_ASYNCIO 0x02000000
 #define V4L2_CAP_STREAMING 0x04000000
 #define V4L2_CAP_META_OUTPUT 0x08000000
 #define V4L2_CAP_TOUCH 0x10000000
@@ -273,6 +272,8 @@
 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
+#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -280,6 +281,7 @@
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -299,6 +301,7 @@
 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
@@ -368,6 +371,7 @@
 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -787,7 +791,7 @@
 #define V4L2_DV_FL_CAN_DETECT_REDUCED_FPS (1 << 9)
 #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_BLANKING_HEIGHT(bt) ((bt)->vfrontporch + (bt)->vsync + (bt)->vbackporch + ((bt)->interlaced ? ((bt)->il_vfrontporch + (bt)->il_vsync + (bt)->il_vbackporch) : 0))
 #define V4L2_DV_BT_FRAME_HEIGHT(bt) ((bt)->height + V4L2_DV_BT_BLANKING_HEIGHT(bt))
 struct v4l2_dv_timings {
   __u32 type;
@@ -906,6 +910,11 @@
     struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
     struct v4l2_ctrl_vp9_compressed_hdr __user * p_vp9_compressed_hdr_probs;
     struct v4l2_ctrl_vp9_frame __user * p_vp9_frame;
+    struct v4l2_ctrl_hevc_sps __user * p_hevc_sps;
+    struct v4l2_ctrl_hevc_pps __user * p_hevc_pps;
+    struct v4l2_ctrl_hevc_slice_params __user * p_hevc_slice_params;
+    struct v4l2_ctrl_hevc_scaling_matrix __user * p_hevc_scaling_matrix;
+    struct v4l2_ctrl_hevc_decode_params __user * p_hevc_decode_params;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -958,6 +967,11 @@
   V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
   V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
   V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
+  V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
+  V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
+  V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
+  V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
+  V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
 };
 struct v4l2_queryctrl {
   __u32 id;
@@ -1005,6 +1019,7 @@
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
@@ -1308,6 +1323,7 @@
 #define V4L2_EVENT_CTRL_CH_VALUE (1 << 0)
 #define V4L2_EVENT_CTRL_CH_FLAGS (1 << 1)
 #define V4L2_EVENT_CTRL_CH_RANGE (1 << 2)
+#define V4L2_EVENT_CTRL_CH_DIMENSIONS (1 << 3)
 struct v4l2_event_ctrl {
   __u32 changes;
   __u32 type;
@@ -1479,4 +1495,5 @@
 #define BASE_VIDIOC_PRIVATE 192
 #define V4L2_PIX_FMT_HM12 V4L2_PIX_FMT_NV12_16L16
 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 V4L2_PIX_FMT_NV12_32L32
+#define V4L2_CAP_ASYNCIO 0x02000000
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_9p.h b/libc/kernel/uapi/linux/virtio_9p.h
index 1d9dfb1..2e05786 100644
--- a/libc/kernel/uapi/linux/virtio_9p.h
+++ b/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,6 +24,6 @@
 #define VIRTIO_9P_MOUNT_TAG 0
 struct virtio_9p_config {
   __virtio16 tag_len;
-  __u8 tag[0];
+  __u8 tag[];
 } __attribute__((packed));
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_blk.h b/libc/kernel/uapi/linux/virtio_blk.h
index f2f0381..0dd08c5 100644
--- a/libc/kernel/uapi/linux/virtio_blk.h
+++ b/libc/kernel/uapi/linux/virtio_blk.h
@@ -31,6 +31,7 @@
 #define VIRTIO_BLK_F_MQ 12
 #define VIRTIO_BLK_F_DISCARD 13
 #define VIRTIO_BLK_F_WRITE_ZEROES 14
+#define VIRTIO_BLK_F_SECURE_ERASE 16
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_F_BARRIER 0
 #define VIRTIO_BLK_F_SCSI 7
@@ -63,6 +64,9 @@
   __virtio32 max_write_zeroes_seg;
   __u8 write_zeroes_may_unmap;
   __u8 unused1[3];
+  __virtio32 max_secure_erase_sectors;
+  __virtio32 max_secure_erase_seg;
+  __virtio32 secure_erase_sector_alignment;
 } __attribute__((packed));
 #define VIRTIO_BLK_T_IN 0
 #define VIRTIO_BLK_T_OUT 1
@@ -73,6 +77,7 @@
 #define VIRTIO_BLK_T_GET_ID 8
 #define VIRTIO_BLK_T_DISCARD 11
 #define VIRTIO_BLK_T_WRITE_ZEROES 13
+#define VIRTIO_BLK_T_SECURE_ERASE 14
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_T_BARRIER 0x80000000
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_config.h b/libc/kernel/uapi/linux/virtio_config.h
index 30e552b..bdd2e73 100644
--- a/libc/kernel/uapi/linux/virtio_config.h
+++ b/libc/kernel/uapi/linux/virtio_config.h
@@ -26,7 +26,7 @@
 #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
 #define VIRTIO_CONFIG_S_FAILED 0x80
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 38
+#define VIRTIO_TRANSPORT_F_END 41
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 #define VIRTIO_F_NOTIFY_ON_EMPTY 24
 #define VIRTIO_F_ANY_LAYOUT 27
@@ -38,4 +38,5 @@
 #define VIRTIO_F_IN_ORDER 35
 #define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
+#define VIRTIO_F_RING_RESET 40
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_net.h b/libc/kernel/uapi/linux/virtio_net.h
index 2d92904..6fe90aa 100644
--- a/libc/kernel/uapi/linux/virtio_net.h
+++ b/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,7 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
 #define VIRTIO_NET_F_MQ 22
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_NOTF_COAL 53
 #define VIRTIO_NET_F_HASH_REPORT 57
 #define VIRTIO_NET_F_RSS 60
 #define VIRTIO_NET_F_RSC_EXT 61
@@ -186,4 +187,15 @@
 #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#define VIRTIO_NET_CTRL_NOTF_COAL 6
+struct virtio_net_ctrl_coal_tx {
+  __le32 tx_max_packets;
+  __le32 tx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
+struct virtio_net_ctrl_coal_rx {
+  __le32 rx_max_packets;
+  __le32 rx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_pci.h b/libc/kernel/uapi/linux/virtio_pci.h
index e6d2731..94ca0a2 100644
--- a/libc/kernel/uapi/linux/virtio_pci.h
+++ b/libc/kernel/uapi/linux/virtio_pci.h
@@ -117,5 +117,7 @@
 #define VIRTIO_PCI_COMMON_Q_AVAILHI 44
 #define VIRTIO_PCI_COMMON_Q_USEDLO 48
 #define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#define VIRTIO_PCI_COMMON_Q_NDATA 56
+#define VIRTIO_PCI_COMMON_Q_RESET 58
 #endif
 #endif
diff --git a/libc/kernel/uapi/linux/wmi.h b/libc/kernel/uapi/linux/wmi.h
index 26f54d9..7b72056 100644
--- a/libc/kernel/uapi/linux/wmi.h
+++ b/libc/kernel/uapi/linux/wmi.h
@@ -30,17 +30,17 @@
   __u16 cmd_select;
   volatile __u32 input[4];
   volatile __u32 output[4];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_extensions {
   __u32 argattrib;
   __u32 blength;
   __u8 data[];
-} __packed;
+} __attribute__((__packed__));
 struct dell_wmi_smbios_buffer {
   __u64 length;
   struct calling_interface_buffer std;
   struct dell_wmi_extensions ext;
-} __packed;
+} __attribute__((__packed__));
 #define CLASS_TOKEN_READ 0
 #define CLASS_TOKEN_WRITE 1
 #define SELECT_TOKEN_STD 0
diff --git a/libc/kernel/uapi/linux/xfrm.h b/libc/kernel/uapi/linux/xfrm.h
index f4df95f..77ded42 100644
--- a/libc/kernel/uapi/linux/xfrm.h
+++ b/libc/kernel/uapi/linux/xfrm.h
@@ -35,7 +35,7 @@
   __u8 ctx_alg;
   __u16 ctx_len;
   __u32 ctx_sid;
-  char ctx_str[0];
+  char ctx_str[];
 };
 #define XFRM_SC_DOI_RESERVED 0
 #define XFRM_SC_DOI_LSM 1
@@ -85,24 +85,24 @@
   __u32 oseq_hi;
   __u32 seq_hi;
   __u32 replay_window;
-  __u32 bmp[0];
+  __u32 bmp[];
 };
 struct xfrm_algo {
   char alg_name[64];
   unsigned int alg_key_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_auth {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_trunc_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_aead {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_icv_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_stats {
   __u32 replay_window;
diff --git a/libc/kernel/uapi/linux/zorro.h b/libc/kernel/uapi/linux/zorro.h
index f8e47a1..86320aa 100644
--- a/libc/kernel/uapi/linux/zorro.h
+++ b/libc/kernel/uapi/linux/zorro.h
@@ -42,7 +42,7 @@
   __u8 ln_Type;
   __s8 ln_Pri;
   __be32 ln_Name;
-} __packed;
+} __attribute__((__packed__));
 struct ExpansionRom {
   __u8 er_Type;
   __u8 er_Product;
@@ -55,7 +55,7 @@
   __u8 er_Reserved0d;
   __u8 er_Reserved0e;
   __u8 er_Reserved0f;
-} __packed;
+} __attribute__((__packed__));
 #define ERT_TYPEMASK 0xc0
 #define ERT_ZORROII 0xc0
 #define ERT_ZORROIII 0x80
@@ -73,6 +73,6 @@
   __be32 cd_Driver;
   __be32 cd_NextCD;
   __be32 cd_Unused[4];
-} __packed;
+} __attribute__((__packed__));
 #define ZORRO_NUM_AUTO 16
 #endif
diff --git a/libc/kernel/uapi/misc/habanalabs.h b/libc/kernel/uapi/misc/habanalabs.h
index 2d18d7e..b6140bc 100644
--- a/libc/kernel/uapi/misc/habanalabs.h
+++ b/libc/kernel/uapi/misc/habanalabs.h
@@ -159,6 +159,270 @@
   GAUDI_QUEUE_ID_NIC_9_3 = 112,
   GAUDI_QUEUE_ID_SIZE
 };
+enum gaudi2_queue_id {
+  GAUDI2_QUEUE_ID_PDMA_0_0 = 0,
+  GAUDI2_QUEUE_ID_PDMA_0_1 = 1,
+  GAUDI2_QUEUE_ID_PDMA_0_2 = 2,
+  GAUDI2_QUEUE_ID_PDMA_0_3 = 3,
+  GAUDI2_QUEUE_ID_PDMA_1_0 = 4,
+  GAUDI2_QUEUE_ID_PDMA_1_1 = 5,
+  GAUDI2_QUEUE_ID_PDMA_1_2 = 6,
+  GAUDI2_QUEUE_ID_PDMA_1_3 = 7,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_0 = 8,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_1 = 9,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_2 = 10,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_0_3 = 11,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_0 = 12,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_1 = 13,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_2 = 14,
+  GAUDI2_QUEUE_ID_DCORE0_EDMA_1_3 = 15,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_0 = 16,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_1 = 17,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_2 = 18,
+  GAUDI2_QUEUE_ID_DCORE0_MME_0_3 = 19,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_0 = 20,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_1 = 21,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_2 = 22,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_0_3 = 23,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_0 = 24,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_1 = 25,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_2 = 26,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_1_3 = 27,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_0 = 28,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_1 = 29,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_2 = 30,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_2_3 = 31,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_0 = 32,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_1 = 33,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_2 = 34,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_3_3 = 35,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_0 = 36,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_1 = 37,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_2 = 38,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_4_3 = 39,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_0 = 40,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_1 = 41,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_2 = 42,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_5_3 = 43,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_0 = 44,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_1 = 45,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_2 = 46,
+  GAUDI2_QUEUE_ID_DCORE0_TPC_6_3 = 47,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_0 = 48,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_1 = 49,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_2 = 50,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_0_3 = 51,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_0 = 52,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_1 = 53,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_2 = 54,
+  GAUDI2_QUEUE_ID_DCORE1_EDMA_1_3 = 55,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_0 = 56,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_1 = 57,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_2 = 58,
+  GAUDI2_QUEUE_ID_DCORE1_MME_0_3 = 59,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_0 = 60,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_1 = 61,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_2 = 62,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_0_3 = 63,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_0 = 64,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_1 = 65,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_2 = 66,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_1_3 = 67,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_0 = 68,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_1 = 69,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_2 = 70,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_2_3 = 71,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_0 = 72,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_1 = 73,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_2 = 74,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_3_3 = 75,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_0 = 76,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_1 = 77,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_2 = 78,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_4_3 = 79,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_0 = 80,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_1 = 81,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_2 = 82,
+  GAUDI2_QUEUE_ID_DCORE1_TPC_5_3 = 83,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_0 = 84,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_1 = 85,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_2 = 86,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_0_3 = 87,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_0 = 88,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_1 = 89,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_2 = 90,
+  GAUDI2_QUEUE_ID_DCORE2_EDMA_1_3 = 91,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_0 = 92,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_1 = 93,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_2 = 94,
+  GAUDI2_QUEUE_ID_DCORE2_MME_0_3 = 95,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_0 = 96,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_1 = 97,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_2 = 98,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_0_3 = 99,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_0 = 100,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_1 = 101,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_2 = 102,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_1_3 = 103,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_0 = 104,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_1 = 105,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_2 = 106,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_2_3 = 107,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_0 = 108,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_1 = 109,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_2 = 110,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_3_3 = 111,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_0 = 112,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_1 = 113,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_2 = 114,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_4_3 = 115,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_0 = 116,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_1 = 117,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_2 = 118,
+  GAUDI2_QUEUE_ID_DCORE2_TPC_5_3 = 119,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_0 = 120,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_1 = 121,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_2 = 122,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_0_3 = 123,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_0 = 124,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_1 = 125,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_2 = 126,
+  GAUDI2_QUEUE_ID_DCORE3_EDMA_1_3 = 127,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_0 = 128,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_1 = 129,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_2 = 130,
+  GAUDI2_QUEUE_ID_DCORE3_MME_0_3 = 131,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_0 = 132,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_1 = 133,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_2 = 134,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_0_3 = 135,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_0 = 136,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_1 = 137,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_2 = 138,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_1_3 = 139,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_0 = 140,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_1 = 141,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_2 = 142,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_2_3 = 143,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_0 = 144,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_1 = 145,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_2 = 146,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_3_3 = 147,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_0 = 148,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_1 = 149,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_2 = 150,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_4_3 = 151,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_0 = 152,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_1 = 153,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_2 = 154,
+  GAUDI2_QUEUE_ID_DCORE3_TPC_5_3 = 155,
+  GAUDI2_QUEUE_ID_NIC_0_0 = 156,
+  GAUDI2_QUEUE_ID_NIC_0_1 = 157,
+  GAUDI2_QUEUE_ID_NIC_0_2 = 158,
+  GAUDI2_QUEUE_ID_NIC_0_3 = 159,
+  GAUDI2_QUEUE_ID_NIC_1_0 = 160,
+  GAUDI2_QUEUE_ID_NIC_1_1 = 161,
+  GAUDI2_QUEUE_ID_NIC_1_2 = 162,
+  GAUDI2_QUEUE_ID_NIC_1_3 = 163,
+  GAUDI2_QUEUE_ID_NIC_2_0 = 164,
+  GAUDI2_QUEUE_ID_NIC_2_1 = 165,
+  GAUDI2_QUEUE_ID_NIC_2_2 = 166,
+  GAUDI2_QUEUE_ID_NIC_2_3 = 167,
+  GAUDI2_QUEUE_ID_NIC_3_0 = 168,
+  GAUDI2_QUEUE_ID_NIC_3_1 = 169,
+  GAUDI2_QUEUE_ID_NIC_3_2 = 170,
+  GAUDI2_QUEUE_ID_NIC_3_3 = 171,
+  GAUDI2_QUEUE_ID_NIC_4_0 = 172,
+  GAUDI2_QUEUE_ID_NIC_4_1 = 173,
+  GAUDI2_QUEUE_ID_NIC_4_2 = 174,
+  GAUDI2_QUEUE_ID_NIC_4_3 = 175,
+  GAUDI2_QUEUE_ID_NIC_5_0 = 176,
+  GAUDI2_QUEUE_ID_NIC_5_1 = 177,
+  GAUDI2_QUEUE_ID_NIC_5_2 = 178,
+  GAUDI2_QUEUE_ID_NIC_5_3 = 179,
+  GAUDI2_QUEUE_ID_NIC_6_0 = 180,
+  GAUDI2_QUEUE_ID_NIC_6_1 = 181,
+  GAUDI2_QUEUE_ID_NIC_6_2 = 182,
+  GAUDI2_QUEUE_ID_NIC_6_3 = 183,
+  GAUDI2_QUEUE_ID_NIC_7_0 = 184,
+  GAUDI2_QUEUE_ID_NIC_7_1 = 185,
+  GAUDI2_QUEUE_ID_NIC_7_2 = 186,
+  GAUDI2_QUEUE_ID_NIC_7_3 = 187,
+  GAUDI2_QUEUE_ID_NIC_8_0 = 188,
+  GAUDI2_QUEUE_ID_NIC_8_1 = 189,
+  GAUDI2_QUEUE_ID_NIC_8_2 = 190,
+  GAUDI2_QUEUE_ID_NIC_8_3 = 191,
+  GAUDI2_QUEUE_ID_NIC_9_0 = 192,
+  GAUDI2_QUEUE_ID_NIC_9_1 = 193,
+  GAUDI2_QUEUE_ID_NIC_9_2 = 194,
+  GAUDI2_QUEUE_ID_NIC_9_3 = 195,
+  GAUDI2_QUEUE_ID_NIC_10_0 = 196,
+  GAUDI2_QUEUE_ID_NIC_10_1 = 197,
+  GAUDI2_QUEUE_ID_NIC_10_2 = 198,
+  GAUDI2_QUEUE_ID_NIC_10_3 = 199,
+  GAUDI2_QUEUE_ID_NIC_11_0 = 200,
+  GAUDI2_QUEUE_ID_NIC_11_1 = 201,
+  GAUDI2_QUEUE_ID_NIC_11_2 = 202,
+  GAUDI2_QUEUE_ID_NIC_11_3 = 203,
+  GAUDI2_QUEUE_ID_NIC_12_0 = 204,
+  GAUDI2_QUEUE_ID_NIC_12_1 = 205,
+  GAUDI2_QUEUE_ID_NIC_12_2 = 206,
+  GAUDI2_QUEUE_ID_NIC_12_3 = 207,
+  GAUDI2_QUEUE_ID_NIC_13_0 = 208,
+  GAUDI2_QUEUE_ID_NIC_13_1 = 209,
+  GAUDI2_QUEUE_ID_NIC_13_2 = 210,
+  GAUDI2_QUEUE_ID_NIC_13_3 = 211,
+  GAUDI2_QUEUE_ID_NIC_14_0 = 212,
+  GAUDI2_QUEUE_ID_NIC_14_1 = 213,
+  GAUDI2_QUEUE_ID_NIC_14_2 = 214,
+  GAUDI2_QUEUE_ID_NIC_14_3 = 215,
+  GAUDI2_QUEUE_ID_NIC_15_0 = 216,
+  GAUDI2_QUEUE_ID_NIC_15_1 = 217,
+  GAUDI2_QUEUE_ID_NIC_15_2 = 218,
+  GAUDI2_QUEUE_ID_NIC_15_3 = 219,
+  GAUDI2_QUEUE_ID_NIC_16_0 = 220,
+  GAUDI2_QUEUE_ID_NIC_16_1 = 221,
+  GAUDI2_QUEUE_ID_NIC_16_2 = 222,
+  GAUDI2_QUEUE_ID_NIC_16_3 = 223,
+  GAUDI2_QUEUE_ID_NIC_17_0 = 224,
+  GAUDI2_QUEUE_ID_NIC_17_1 = 225,
+  GAUDI2_QUEUE_ID_NIC_17_2 = 226,
+  GAUDI2_QUEUE_ID_NIC_17_3 = 227,
+  GAUDI2_QUEUE_ID_NIC_18_0 = 228,
+  GAUDI2_QUEUE_ID_NIC_18_1 = 229,
+  GAUDI2_QUEUE_ID_NIC_18_2 = 230,
+  GAUDI2_QUEUE_ID_NIC_18_3 = 231,
+  GAUDI2_QUEUE_ID_NIC_19_0 = 232,
+  GAUDI2_QUEUE_ID_NIC_19_1 = 233,
+  GAUDI2_QUEUE_ID_NIC_19_2 = 234,
+  GAUDI2_QUEUE_ID_NIC_19_3 = 235,
+  GAUDI2_QUEUE_ID_NIC_20_0 = 236,
+  GAUDI2_QUEUE_ID_NIC_20_1 = 237,
+  GAUDI2_QUEUE_ID_NIC_20_2 = 238,
+  GAUDI2_QUEUE_ID_NIC_20_3 = 239,
+  GAUDI2_QUEUE_ID_NIC_21_0 = 240,
+  GAUDI2_QUEUE_ID_NIC_21_1 = 241,
+  GAUDI2_QUEUE_ID_NIC_21_2 = 242,
+  GAUDI2_QUEUE_ID_NIC_21_3 = 243,
+  GAUDI2_QUEUE_ID_NIC_22_0 = 244,
+  GAUDI2_QUEUE_ID_NIC_22_1 = 245,
+  GAUDI2_QUEUE_ID_NIC_22_2 = 246,
+  GAUDI2_QUEUE_ID_NIC_22_3 = 247,
+  GAUDI2_QUEUE_ID_NIC_23_0 = 248,
+  GAUDI2_QUEUE_ID_NIC_23_1 = 249,
+  GAUDI2_QUEUE_ID_NIC_23_2 = 250,
+  GAUDI2_QUEUE_ID_NIC_23_3 = 251,
+  GAUDI2_QUEUE_ID_ROT_0_0 = 252,
+  GAUDI2_QUEUE_ID_ROT_0_1 = 253,
+  GAUDI2_QUEUE_ID_ROT_0_2 = 254,
+  GAUDI2_QUEUE_ID_ROT_0_3 = 255,
+  GAUDI2_QUEUE_ID_ROT_1_0 = 256,
+  GAUDI2_QUEUE_ID_ROT_1_1 = 257,
+  GAUDI2_QUEUE_ID_ROT_1_2 = 258,
+  GAUDI2_QUEUE_ID_ROT_1_3 = 259,
+  GAUDI2_QUEUE_ID_CPU_PQ = 260,
+  GAUDI2_QUEUE_ID_SIZE
+};
 enum goya_engine_id {
   GOYA_ENGINE_ID_DMA_0 = 0,
   GOYA_ENGINE_ID_DMA_1,
@@ -209,6 +473,84 @@
   GAUDI_ENGINE_ID_NIC_9,
   GAUDI_ENGINE_ID_SIZE
 };
+enum gaudi2_engine_id {
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_0 = 0,
+  GAUDI2_DCORE0_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE0_ENGINE_ID_MME,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE0_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE1_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE1_ENGINE_ID_MME,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE1_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE1_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE2_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE2_ENGINE_ID_MME,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE2_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE2_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_0,
+  GAUDI2_DCORE3_ENGINE_ID_EDMA_1,
+  GAUDI2_DCORE3_ENGINE_ID_MME,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_0,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_1,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_2,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_3,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_4,
+  GAUDI2_DCORE3_ENGINE_ID_TPC_5,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_0,
+  GAUDI2_DCORE3_ENGINE_ID_DEC_1,
+  GAUDI2_DCORE0_ENGINE_ID_TPC_6,
+  GAUDI2_ENGINE_ID_PDMA_0,
+  GAUDI2_ENGINE_ID_PDMA_1,
+  GAUDI2_ENGINE_ID_ROT_0,
+  GAUDI2_ENGINE_ID_ROT_1,
+  GAUDI2_PCIE_ENGINE_ID_DEC_0,
+  GAUDI2_PCIE_ENGINE_ID_DEC_1,
+  GAUDI2_ENGINE_ID_NIC0_0,
+  GAUDI2_ENGINE_ID_NIC0_1,
+  GAUDI2_ENGINE_ID_NIC1_0,
+  GAUDI2_ENGINE_ID_NIC1_1,
+  GAUDI2_ENGINE_ID_NIC2_0,
+  GAUDI2_ENGINE_ID_NIC2_1,
+  GAUDI2_ENGINE_ID_NIC3_0,
+  GAUDI2_ENGINE_ID_NIC3_1,
+  GAUDI2_ENGINE_ID_NIC4_0,
+  GAUDI2_ENGINE_ID_NIC4_1,
+  GAUDI2_ENGINE_ID_NIC5_0,
+  GAUDI2_ENGINE_ID_NIC5_1,
+  GAUDI2_ENGINE_ID_NIC6_0,
+  GAUDI2_ENGINE_ID_NIC6_1,
+  GAUDI2_ENGINE_ID_NIC7_0,
+  GAUDI2_ENGINE_ID_NIC7_1,
+  GAUDI2_ENGINE_ID_NIC8_0,
+  GAUDI2_ENGINE_ID_NIC8_1,
+  GAUDI2_ENGINE_ID_NIC9_0,
+  GAUDI2_ENGINE_ID_NIC9_1,
+  GAUDI2_ENGINE_ID_NIC10_0,
+  GAUDI2_ENGINE_ID_NIC10_1,
+  GAUDI2_ENGINE_ID_NIC11_0,
+  GAUDI2_ENGINE_ID_NIC11_1,
+  GAUDI2_ENGINE_ID_SIZE
+};
 enum hl_goya_pll_index {
   HL_GOYA_CPU_PLL = 0,
   HL_GOYA_IC_PLL,
@@ -232,21 +574,56 @@
   HL_GAUDI_IF_PLL,
   HL_GAUDI_PLL_MAX
 };
+enum hl_gaudi2_pll_index {
+  HL_GAUDI2_CPU_PLL = 0,
+  HL_GAUDI2_PCI_PLL,
+  HL_GAUDI2_SRAM_PLL,
+  HL_GAUDI2_HBM_PLL,
+  HL_GAUDI2_NIC_PLL,
+  HL_GAUDI2_DMA_PLL,
+  HL_GAUDI2_MESH_PLL,
+  HL_GAUDI2_MME_PLL,
+  HL_GAUDI2_TPC_PLL,
+  HL_GAUDI2_IF_PLL,
+  HL_GAUDI2_VID_PLL,
+  HL_GAUDI2_MSS_PLL,
+  HL_GAUDI2_PLL_MAX
+};
+enum hl_goya_dma_direction {
+  HL_DMA_HOST_TO_DRAM,
+  HL_DMA_HOST_TO_SRAM,
+  HL_DMA_DRAM_TO_SRAM,
+  HL_DMA_SRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_HOST,
+  HL_DMA_DRAM_TO_HOST,
+  HL_DMA_DRAM_TO_DRAM,
+  HL_DMA_SRAM_TO_SRAM,
+  HL_DMA_ENUM_MAX
+};
 enum hl_device_status {
   HL_DEVICE_STATUS_OPERATIONAL,
   HL_DEVICE_STATUS_IN_RESET,
   HL_DEVICE_STATUS_MALFUNCTION,
   HL_DEVICE_STATUS_NEEDS_RESET,
   HL_DEVICE_STATUS_IN_DEVICE_CREATION,
-  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_DEVICE_CREATION
+  HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE,
+  HL_DEVICE_STATUS_LAST = HL_DEVICE_STATUS_IN_RESET_AFTER_DEVICE_RELEASE
 };
 enum hl_server_type {
   HL_SERVER_TYPE_UNKNOWN = 0,
   HL_SERVER_GAUDI_HLS1 = 1,
   HL_SERVER_GAUDI_HLS1H = 2,
   HL_SERVER_GAUDI_TYPE1 = 3,
-  HL_SERVER_GAUDI_TYPE2 = 4
+  HL_SERVER_GAUDI_TYPE2 = 4,
+  HL_SERVER_GAUDI2_HLS2 = 5
 };
+#define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
+#define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
+#define HL_NOTIFIER_EVENT_DEVICE_RESET (1ULL << 2)
+#define HL_NOTIFIER_EVENT_CS_TIMEOUT (1ULL << 3)
+#define HL_NOTIFIER_EVENT_DEVICE_UNAVAILABLE (1ULL << 4)
+#define HL_NOTIFIER_EVENT_USER_ENGINE_ERR (1ULL << 5)
+#define HL_NOTIFIER_EVENT_GENERAL_HW_ERR (1ULL << 6)
 #define HL_INFO_HW_IP_INFO 0
 #define HL_INFO_HW_EVENTS 1
 #define HL_INFO_DRAM_USAGE 2
@@ -271,11 +648,15 @@
 #define HL_INFO_CS_TIMEOUT_EVENT 24
 #define HL_INFO_RAZWI_EVENT 25
 #define HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES 26
+#define HL_INFO_SECURED_ATTESTATION 27
 #define HL_INFO_REGISTER_EVENTFD 28
 #define HL_INFO_UNREGISTER_EVENTFD 29
 #define HL_INFO_GET_EVENTS 30
+#define HL_INFO_UNDEFINED_OPCODE_EVENT 31
+#define HL_INFO_ENGINE_STATUS 32
 #define HL_INFO_VERSION_MAX_LEN 128
 #define HL_INFO_CARD_NAME_MAX_LEN 16
+#define HL_ENGINES_DATA_MAX_SIZE SZ_1M
 struct hl_info_hw_ip_info {
   __u64 sram_base_address;
   __u64 dram_base_address;
@@ -284,7 +665,7 @@
   __u32 num_of_events;
   __u32 device_id;
   __u32 module_id;
-  __u32 reserved;
+  __u32 decoder_enabled_mask;
   __u16 first_available_interrupt_id;
   __u16 server_type;
   __u32 cpld_version;
@@ -294,12 +675,13 @@
   __u32 psoc_pci_pll_div_factor;
   __u8 tpc_enabled_mask;
   __u8 dram_enabled;
-  __u8 pad[2];
+  __u8 security_enabled;
+  __u8 mme_master_slave_mode;
   __u8 cpucp_version[HL_INFO_VERSION_MAX_LEN];
   __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
-  __u64 reserved2;
+  __u64 tpc_enabled_mask_ext;
   __u64 dram_page_size;
-  __u32 reserved3;
+  __u32 edma_enabled_mask;
   __u16 number_of_user_interrupts;
   __u16 pad2;
   __u64 reserved4;
@@ -408,9 +790,40 @@
   __u8 error_type;
   __u8 pad[2];
 };
+#define MAX_QMAN_STREAMS_INFO 4
+#define OPCODE_INFO_MAX_ADDR_SIZE 8
+struct hl_info_undefined_opcode_event {
+  __s64 timestamp;
+  __u64 cb_addr_streams[MAX_QMAN_STREAMS_INFO][OPCODE_INFO_MAX_ADDR_SIZE];
+  __u64 cq_addr;
+  __u32 cq_size;
+  __u32 cb_addr_streams_len;
+  __u32 engine_id;
+  __u32 stream_id;
+};
 struct hl_info_dev_memalloc_page_sizes {
   __u64 page_order_bitmask;
 };
+#define SEC_PCR_DATA_BUF_SZ 256
+#define SEC_PCR_QUOTE_BUF_SZ 510
+#define SEC_SIGNATURE_BUF_SZ 255
+#define SEC_PUB_DATA_BUF_SZ 510
+#define SEC_CERTIFICATE_BUF_SZ 2046
+struct hl_info_sec_attest {
+  __u32 nonce;
+  __u16 pcr_quote_len;
+  __u16 pub_data_len;
+  __u16 certificate_len;
+  __u8 pcr_num_reg;
+  __u8 pcr_reg_len;
+  __u8 quote_sig_len;
+  __u8 pcr_data[SEC_PCR_DATA_BUF_SZ];
+  __u8 pcr_quote[SEC_PCR_QUOTE_BUF_SZ];
+  __u8 quote_sig[SEC_SIGNATURE_BUF_SZ];
+  __u8 public_data[SEC_PUB_DATA_BUF_SZ];
+  __u8 certificate[SEC_CERTIFICATE_BUF_SZ];
+  __u8 pad0[2];
+};
 enum gaudi_dcores {
   HL_GAUDI_WS_DCORE,
   HL_GAUDI_WN_DCORE,
@@ -427,6 +840,8 @@
     __u32 period_ms;
     __u32 pll_index;
     __u32 eventfd;
+    __u32 user_buffer_actual_size;
+    __u32 sec_attest_nonce;
   };
   __u32 pad;
 };
@@ -489,11 +904,23 @@
 #define HL_CS_FLAGS_ENCAP_SIGNALS 0x800
 #define HL_CS_FLAGS_RESERVE_SIGNALS_ONLY 0x1000
 #define HL_CS_FLAGS_UNRESERVE_SIGNALS_ONLY 0x2000
+#define HL_CS_FLAGS_ENGINE_CORE_COMMAND 0x4000
 #define HL_CS_STATUS_SUCCESS 0
 #define HL_MAX_JOBS_PER_CS 512
+#define HL_ENGINE_CORE_HALT (1 << 0)
+#define HL_ENGINE_CORE_RUN (1 << 1)
 struct hl_cs_in {
-  __u64 chunks_restore;
-  __u64 chunks_execute;
+  union {
+    struct {
+      __u64 chunks_restore;
+      __u64 chunks_execute;
+    };
+    struct {
+      __u64 engine_cores;
+      __u32 num_engine_cores;
+      __u32 core_command;
+    };
+  };
   union {
     __u64 seq;
     __u32 encaps_sig_handle_id;
@@ -507,6 +934,7 @@
   __u32 timeout;
   __u32 cs_flags;
   __u32 ctx_id;
+  __u8 pad[4];
 };
 struct hl_cs_out {
   union {
@@ -527,6 +955,8 @@
 };
 #define HL_WAIT_CS_FLAGS_INTERRUPT 0x2
 #define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_CQ_INTERRUPT 0xFFF00000
+#define HL_WAIT_CS_FLAGS_ANY_DEC_INTERRUPT 0xFFE00000
 #define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
 #define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
 #define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
@@ -664,12 +1094,18 @@
   __u32 bw_win;
   __u32 win_capture;
   __u32 id;
-  __u32 pad;
+  __u32 control;
+  __u64 start_addr2;
+  __u64 end_addr2;
+  __u64 start_addr3;
+  __u64 end_addr3;
 };
 struct hl_debug_params_spmu {
   __u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
   __u32 event_types_num;
-  __u32 pad;
+  __u32 pmtrc_val;
+  __u32 trc_ctrl_host_val;
+  __u32 trc_en_host_val;
 };
 #define HL_DEBUG_OP_ETR 0
 #define HL_DEBUG_OP_ETF 1
@@ -689,7 +1125,6 @@
   __u32 enable;
   __u32 ctx_id;
 };
-#define HL_NOTIFIER_EVENT_TPC_ASSERT (1 << 0)
 #define HL_IOCTL_INFO _IOWR('H', 0x01, struct hl_info_args)
 #define HL_IOCTL_CB _IOWR('H', 0x02, union hl_cb_args)
 #define HL_IOCTL_CS _IOWR('H', 0x03, union hl_cs_args)
diff --git a/libc/kernel/uapi/misc/uacce/hisi_qm.h b/libc/kernel/uapi/misc/uacce/hisi_qm.h
index 87757a9..d2509d0 100644
--- a/libc/kernel/uapi/misc/uacce/hisi_qm.h
+++ b/libc/kernel/uapi/misc/uacce/hisi_qm.h
@@ -23,8 +23,15 @@
   __u16 id;
   __u16 qc_type;
 };
+struct hisi_qp_info {
+  __u32 sqe_size;
+  __u16 sq_depth;
+  __u16 cq_depth;
+  __u64 reserved;
+};
 #define HISI_QM_API_VER_BASE "hisi_qm_v1"
 #define HISI_QM_API_VER2_BASE "hisi_qm_v2"
 #define HISI_QM_API_VER3_BASE "hisi_qm_v3"
 #define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
+#define UACCE_CMD_QM_SET_QP_INFO _IOWR('H', 11, struct hisi_qp_info)
 #endif
diff --git a/libc/kernel/uapi/mtd/mtd-abi.h b/libc/kernel/uapi/mtd/mtd-abi.h
index 50ae565..6e26cae 100644
--- a/libc/kernel/uapi/mtd/mtd-abi.h
+++ b/libc/kernel/uapi/mtd/mtd-abi.h
@@ -52,6 +52,21 @@
   __u8 mode;
   __u8 padding[7];
 };
+struct mtd_read_req_ecc_stats {
+  __u32 uncorrectable_errors;
+  __u32 corrected_bitflips;
+  __u32 max_bitflips;
+};
+struct mtd_read_req {
+  __u64 start;
+  __u64 len;
+  __u64 ooblen;
+  __u64 usr_data;
+  __u64 usr_oob;
+  __u8 mode;
+  __u8 padding[7];
+  struct mtd_read_req_ecc_stats ecc_stats;
+};
 #define MTD_ABSENT 0
 #define MTD_RAM 1
 #define MTD_ROM 2
@@ -122,6 +137,7 @@
 #define MEMISLOCKED _IOR('M', 23, struct erase_info_user)
 #define MEMWRITE _IOWR('M', 24, struct mtd_write_req)
 #define OTPERASE _IOW('M', 25, struct otp_info)
+#define MEMREAD _IOWR('M', 26, struct mtd_read_req)
 struct nand_oobinfo {
   __u32 useecc;
   __u32 eccbytes;
diff --git a/libc/kernel/uapi/mtd/ubi-user.h b/libc/kernel/uapi/mtd/ubi-user.h
index 866fbd2..db203d5 100644
--- a/libc/kernel/uapi/mtd/ubi-user.h
+++ b/libc/kernel/uapi/mtd/ubi-user.h
@@ -56,7 +56,8 @@
   __s32 mtd_num;
   __s32 vid_hdr_offset;
   __s16 max_beb_per1024;
-  __s8 padding[10];
+  __s8 disable_fm;
+  __s8 padding[9];
 };
 enum {
   UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
@@ -71,11 +72,11 @@
   __s16 name_len;
   __s8 padding2[4];
   char name[UBI_MAX_VOLUME_NAME + 1];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rsvol_req {
   __s64 bytes;
   __s32 vol_id;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_rnvol_req {
   __s32 count;
   __s8 padding1[12];
@@ -85,24 +86,24 @@
     __s8 padding2[2];
     char name[UBI_MAX_VOLUME_NAME + 1];
   } ents[UBI_MAX_RNVOL];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_leb_change_req {
   __s32 lnum;
   __s32 bytes;
   __s8 dtype;
   __s8 padding[7];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_map_req {
   __s32 lnum;
   __s8 dtype;
   __s8 padding[3];
-} __packed;
+} __attribute__((__packed__));
 struct ubi_set_vol_prop_req {
   __u8 property;
   __u8 padding[7];
   __u64 value;
-} __packed;
+} __attribute__((__packed__));
 struct ubi_blkcreate_req {
   __s8 padding[128];
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/rdma/efa-abi.h b/libc/kernel/uapi/rdma/efa-abi.h
index 4b6842b..bfb3f18 100644
--- a/libc/kernel/uapi/rdma/efa-abi.h
+++ b/libc/kernel/uapi/rdma/efa-abi.h
@@ -49,6 +49,7 @@
 };
 enum {
   EFA_CREATE_CQ_WITH_COMPLETION_CHANNEL = 1 << 0,
+  EFA_CREATE_CQ_WITH_SGID = 1 << 1,
 };
 struct efa_ibv_create_cq {
   __u32 comp_mask;
@@ -102,6 +103,7 @@
   EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
   EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
   EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
+  EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
 };
 struct efa_ibv_ex_query_device_resp {
   __u32 comp_mask;
diff --git a/libc/kernel/uapi/rdma/erdma-abi.h b/libc/kernel/uapi/rdma/erdma-abi.h
new file mode 100644
index 0000000..4df1757
--- /dev/null
+++ b/libc/kernel/uapi/rdma/erdma-abi.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 __ERDMA_USER_H__
+#define __ERDMA_USER_H__
+#include <linux/types.h>
+#define ERDMA_ABI_VERSION 1
+struct erdma_ureq_create_cq {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_cq {
+  __u32 cq_id;
+  __u32 num_cqe;
+};
+struct erdma_ureq_create_qp {
+  __aligned_u64 db_record_va;
+  __aligned_u64 qbuf_va;
+  __u32 qbuf_len;
+  __u32 rsvd0;
+};
+struct erdma_uresp_create_qp {
+  __u32 qp_id;
+  __u32 num_sqe;
+  __u32 num_rqe;
+  __u32 rq_offset;
+};
+struct erdma_uresp_alloc_ctx {
+  __u32 dev_id;
+  __u32 pad;
+  __u32 sdb_type;
+  __u32 sdb_offset;
+  __aligned_u64 sdb;
+  __aligned_u64 rdb;
+  __aligned_u64 cdb;
+};
+#endif
diff --git a/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index 3352907..6d58600 100644
--- a/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -80,7 +80,7 @@
 struct hfi1_status {
   __aligned_u64 dev;
   __aligned_u64 port;
-  char freezemsg[0];
+  char freezemsg[];
 };
 enum sdma_req_opcode {
   EXPECTED = 0,
diff --git a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 3b94907..766d5be 100644
--- a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -191,6 +191,7 @@
   RDMA_DRIVER_QIB,
   RDMA_DRIVER_EFA,
   RDMA_DRIVER_SIW,
+  RDMA_DRIVER_ERDMA,
 };
 enum ib_uverbs_gid_type {
   IB_UVERBS_GID_TYPE_IB,
diff --git a/libc/kernel/uapi/rdma/ib_user_verbs.h b/libc/kernel/uapi/rdma/ib_user_verbs.h
index e24410e..552c80a 100644
--- a/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -106,16 +106,16 @@
 };
 struct ib_uverbs_get_context {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_get_context_resp {
   __u32 async_fd;
   __u32 num_comp_vectors;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_device_resp {
   __aligned_u64 fw_ver;
@@ -208,7 +208,7 @@
   __aligned_u64 response;
   __u8 port_num;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_port_resp {
   __u32 port_cap_flags;
@@ -236,11 +236,11 @@
 };
 struct ib_uverbs_alloc_pd {
   __aligned_u64 response;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_pd_resp {
   __u32 pd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_dealloc_pd {
   __u32 pd_handle;
@@ -249,11 +249,11 @@
   __aligned_u64 response;
   __u32 fd;
   __u32 oflags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_open_xrcd_resp {
   __u32 xrcd_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_close_xrcd {
   __u32 xrcd_handle;
@@ -265,13 +265,13 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_reg_mr_resp {
   __u32 mr_handle;
   __u32 lkey;
   __u32 rkey;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_rereg_mr {
   __aligned_u64 response;
@@ -282,12 +282,12 @@
   __aligned_u64 hca_va;
   __u32 pd_handle;
   __u32 access_flags;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_rereg_mr_resp {
   __u32 lkey;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dereg_mr {
   __u32 mr_handle;
@@ -297,12 +297,12 @@
   __u32 pd_handle;
   __u8 mw_type;
   __u8 reserved[3];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_alloc_mw_resp {
   __u32 mw_handle;
   __u32 rkey;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_dealloc_mw {
   __u32 mw_handle;
@@ -320,7 +320,7 @@
   __u32 comp_vector;
   __s32 comp_channel;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_ex_create_cq_flags {
   IB_UVERBS_CQ_FLAGS_TIMESTAMP_COMPLETION = 1 << 0,
@@ -349,12 +349,12 @@
   __aligned_u64 response;
   __u32 cq_handle;
   __u32 cqe;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_resize_cq_resp {
   __u32 cqe;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_poll_cq {
   __aligned_u64 response;
@@ -394,7 +394,7 @@
 struct ib_uverbs_poll_cq_resp {
   __u32 count;
   __u32 reserved;
-  struct ib_uverbs_wc wc[0];
+  struct ib_uverbs_wc wc[];
 };
 struct ib_uverbs_req_notify_cq {
   __u32 cq_handle;
@@ -476,7 +476,7 @@
   __u8 qp_type;
   __u8 is_srq;
   __u8 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 enum ib_uverbs_create_qp_mask {
   IB_UVERBS_CREATE_QP_MASK_IND_TABLE = 1UL << 0,
@@ -511,7 +511,7 @@
   __u32 qpn;
   __u8 qp_type;
   __u8 reserved[7];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_qp_resp {
   __u32 qp_handle;
@@ -547,7 +547,7 @@
   __aligned_u64 response;
   __u32 qp_handle;
   __u32 attr_mask;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_qp_resp {
   struct ib_uverbs_qp_dest dest;
@@ -580,7 +580,7 @@
   __u8 alt_timeout;
   __u8 sq_sig_all;
   __u8 reserved[5];
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_modify_qp {
   struct ib_uverbs_qp_dest dest;
@@ -685,7 +685,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_send_wr send_wr[0];
+  struct ib_uverbs_send_wr send_wr[];
 };
 struct ib_uverbs_post_send_resp {
   __u32 bad_wr;
@@ -701,7 +701,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv_wr[0];
+  struct ib_uverbs_recv_wr recv_wr[];
 };
 struct ib_uverbs_post_recv_resp {
   __u32 bad_wr;
@@ -712,7 +712,7 @@
   __u32 wr_count;
   __u32 sge_count;
   __u32 wqe_size;
-  struct ib_uverbs_recv_wr recv[0];
+  struct ib_uverbs_recv_wr recv[];
 };
 struct ib_uverbs_post_srq_recv_resp {
   __u32 bad_wr;
@@ -723,11 +723,11 @@
   __u32 pd_handle;
   __u32 reserved;
   struct ib_uverbs_ah_attr attr;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_ah_resp {
   __u32 ah_handle;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_destroy_ah {
   __u32 ah_handle;
@@ -737,14 +737,14 @@
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_detach_mcast {
   __u8 gid[16];
   __u32 qp_handle;
   __u16 mlid;
   __u16 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_flow_spec_hdr {
   __u32 type;
@@ -944,7 +944,7 @@
   __u8 reserved[2];
   __u8 port;
   __u32 flags;
-  struct ib_uverbs_flow_spec_hdr flow_specs[0];
+  struct ib_uverbs_flow_spec_hdr flow_specs[];
 };
 struct ib_uverbs_create_flow {
   __u32 comp_mask;
@@ -966,7 +966,7 @@
   __u32 max_wr;
   __u32 max_sge;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_xsrq {
   __aligned_u64 response;
@@ -979,27 +979,27 @@
   __u32 max_num_tags;
   __u32 xrcd_handle;
   __u32 cq_handle;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_create_srq_resp {
   __u32 srq_handle;
   __u32 max_wr;
   __u32 max_sge;
   __u32 srqn;
-  __u32 driver_data[0];
+  __u32 driver_data[];
 };
 struct ib_uverbs_modify_srq {
   __u32 srq_handle;
   __u32 attr_mask;
   __u32 max_wr;
   __u32 srq_limit;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq {
   __aligned_u64 response;
   __u32 srq_handle;
   __u32 reserved;
-  __aligned_u64 driver_data[0];
+  __aligned_u64 driver_data[];
 };
 struct ib_uverbs_query_srq_resp {
   __u32 max_wr;
@@ -1056,7 +1056,7 @@
 struct ib_uverbs_ex_create_rwq_ind_table {
   __u32 comp_mask;
   __u32 log_ind_tbl_size;
-  __u32 wq_handles[0];
+  __u32 wq_handles[];
 };
 struct ib_uverbs_ex_create_rwq_ind_table_resp {
   __u32 comp_mask;
diff --git a/libc/kernel/uapi/rdma/mlx5-abi.h b/libc/kernel/uapi/rdma/mlx5-abi.h
index aadb20e..f41c887 100644
--- a/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -70,6 +70,7 @@
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_ECE = 1UL << 2,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_SQD2RTS = 1UL << 3,
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_REAL_TIME_TS = 1UL << 4,
+  MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_MKEY_UPDATE_TAG = 1UL << 5,
 };
 enum mlx5_user_cmds_supp_uhw {
   MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 862abcb..c060482 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -135,6 +135,7 @@
   MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
   MLX5_IB_ATTR_DEVX_UMEM_REG_OUT_ID,
   MLX5_IB_ATTR_DEVX_UMEM_REG_PGSZ_BITMAP,
+  MLX5_IB_ATTR_DEVX_UMEM_REG_DMABUF_FD,
 };
 enum mlx5_ib_devx_umem_dereg_attrs {
   MLX5_IB_ATTR_DEVX_UMEM_DEREG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -179,6 +180,7 @@
   MLX5_IB_OBJECT_VAR,
   MLX5_IB_OBJECT_PP,
   MLX5_IB_OBJECT_UAR,
+  MLX5_IB_OBJECT_STEERING_ANCHOR,
 };
 enum mlx5_ib_flow_matcher_create_attrs {
   MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -195,6 +197,19 @@
   MLX5_IB_METHOD_FLOW_MATCHER_CREATE = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_METHOD_FLOW_MATCHER_DESTROY,
 };
+enum mlx5_ib_flow_steering_anchor_create_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_TYPE,
+  MLX5_IB_ATTR_STEERING_ANCHOR_PRIORITY,
+  MLX5_IB_ATTR_STEERING_ANCHOR_FT_ID,
+};
+enum mlx5_ib_flow_steering_anchor_destroy_attrs {
+  MLX5_IB_ATTR_STEERING_ANCHOR_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_steering_anchor_methods {
+  MLX5_IB_METHOD_STEERING_ANCHOR_CREATE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_METHOD_STEERING_ANCHOR_DESTROY,
+};
 enum mlx5_ib_device_query_context_attrs {
   MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
 };
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index c3c3f89..f68c0b3 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -43,6 +43,7 @@
   MLX5_IB_UAPI_DM_TYPE_MEMIC,
   MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
   MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
+  MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_PATTERN_SW_ICM,
 };
 enum mlx5_ib_uapi_devx_create_event_channel_flags {
   MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0,
diff --git a/libc/kernel/uapi/rdma/rdma_user_cm.h b/libc/kernel/uapi/rdma/rdma_user_cm.h
index 7b1f7ee..37927f8 100644
--- a/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -145,7 +145,7 @@
 struct rdma_ucm_query_path_resp {
   __u32 num_paths;
   __u32 reserved;
-  struct ib_path_rec_data path_data[0];
+  struct ib_path_rec_data path_data[];
 };
 struct rdma_ucm_conn_param {
   __u32 qp_num;
diff --git a/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
index 22adfaa..dbaf9ed 100644
--- a/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
@@ -50,6 +50,6 @@
   __aligned_u64 reserved1;
   __u32 driver_id;
   __u32 reserved2;
-  struct ib_uverbs_attr attrs[0];
+  struct ib_uverbs_attr attrs[];
 };
 #endif
diff --git a/libc/kernel/uapi/rdma/rdma_user_rxe.h b/libc/kernel/uapi/rdma/rdma_user_rxe.h
index cdb00c7..2476699 100644
--- a/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -52,7 +52,7 @@
 };
 struct rxe_send_wr {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 opcode;
   __u32 send_flags;
   union {
@@ -128,7 +128,7 @@
 };
 struct rxe_recv_wqe {
   __aligned_u64 wr_id;
-  __u32 num_sge;
+  __u32 reserved;
   __u32 padding;
   struct rxe_dma_info dma;
 };
diff --git a/libc/kernel/uapi/scsi/fc/fc_els.h b/libc/kernel/uapi/scsi/fc/fc_els.h
index 04ae5b8..d29287d 100644
--- a/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -142,7 +142,7 @@
 struct fc_tlv_desc {
   __be32 desc_tag;
   __be32 desc_len;
-  __u8 desc_value[0];
+  __u8 desc_value[];
 };
 #define FC_TLV_DESC_HDR_SZ sizeof(struct fc_tlv_desc)
 #define FC_TLV_DESC_LENGTH_FROM_SZ(desc) (sizeof(desc) - FC_TLV_DESC_HDR_SZ)
@@ -618,7 +618,7 @@
   __be32 event_threshold;
   __be32 event_count;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_deli_desc {
   __be32 desc_tag;
@@ -636,7 +636,7 @@
   __be16 event_modifier;
   __be32 event_period;
   __be32 pname_count;
-  __be64 pname_list[0];
+  __be64 pname_list[];
 };
 struct fc_fn_congn_desc {
   __be32 desc_tag;
@@ -651,25 +651,25 @@
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc fpin_desc[0];
+  struct fc_tlv_desc fpin_desc[];
 };
 struct fc_df_desc_fpin_reg {
   __be32 desc_tag;
   __be32 desc_len;
   __be32 count;
-  __be32 desc_tags[0];
+  __be32 desc_tags[];
 };
 struct fc_els_rdf {
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_rdf_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_diag_lnkflt_desc {
   __be32 desc_tag;
@@ -707,12 +707,12 @@
   __u8 edc_cmd;
   __u8 edc_zero[3];
   __be32 desc_len;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 struct fc_els_edc_resp {
   struct fc_els_ls_acc acc_hdr;
   __be32 desc_list_len;
   struct fc_els_lsri_desc lsri;
-  struct fc_tlv_desc desc[0];
+  struct fc_tlv_desc desc[];
 };
 #endif
diff --git a/libc/kernel/uapi/scsi/scsi_bsg_fc.h b/libc/kernel/uapi/scsi/scsi_bsg_fc.h
index 8966f61..2647249 100644
--- a/libc/kernel/uapi/scsi/scsi_bsg_fc.h
+++ b/libc/kernel/uapi/scsi/scsi_bsg_fc.h
@@ -66,7 +66,7 @@
 };
 struct fc_bsg_host_vendor {
   __u64 vendor_id;
-  __u32 vendor_cmd[0];
+  __u32 vendor_cmd[];
 };
 struct fc_bsg_host_vendor_reply {
   __u32 vendor_rsp[0];
diff --git a/libc/kernel/uapi/scsi/scsi_netlink_fc.h b/libc/kernel/uapi/scsi/scsi_netlink_fc.h
index ff92877..6eeb866 100644
--- a/libc/kernel/uapi/scsi/scsi_netlink_fc.h
+++ b/libc/kernel/uapi/scsi/scsi_netlink_fc.h
@@ -30,6 +30,9 @@
   __u16 event_datalen;
   __u32 event_num;
   __u32 event_code;
-  __u32 event_data;
+  union {
+    __u32 event_data;
+    __DECLARE_FLEX_ARRAY(__u8, event_data_flex);
+  };
 } __attribute__((aligned(sizeof(__u64))));
 #endif
diff --git a/libc/kernel/uapi/sound/asoc.h b/libc/kernel/uapi/sound/asoc.h
index eeb12b0..1940e5d 100644
--- a/libc/kernel/uapi/sound/asoc.h
+++ b/libc/kernel/uapi/sound/asoc.h
@@ -356,7 +356,7 @@
   __le32 pcm_elems;
   __le32 dai_link_elems;
   struct snd_soc_tplg_private priv;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_stream_caps_v4 {
   __le32 size;
   char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -372,7 +372,7 @@
   __le32 period_size_max;
   __le32 buffer_size_min;
   __le32 buffer_size_max;
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_pcm_v4 {
   __le32 size;
   char pcm_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN];
@@ -385,11 +385,11 @@
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
   struct snd_soc_tplg_stream_caps_v4 caps[2];
-} __packed;
+} __attribute__((__packed__));
 struct snd_soc_tplg_link_config_v4 {
   __le32 size;
   __le32 id;
   struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX];
   __le32 num_streams;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/sound/asound.h b/libc/kernel/uapi/sound/asound.h
index b0e47c1..6e325e9 100644
--- a/libc/kernel/uapi/sound/asound.h
+++ b/libc/kernel/uapi/sound/asound.h
@@ -605,7 +605,7 @@
   __u32 tv_nsec;
   __u64 tv_sec;
   __u8 data[SNDRV_RAWMIDI_FRAMING_DATA_LENGTH];
-} __packed;
+} __attribute__((__packed__));
 struct snd_rawmidi_params {
   int stream;
   size_t buffer_size;
@@ -884,7 +884,7 @@
 struct snd_ctl_tlv {
   unsigned int numid;
   unsigned int length;
-  unsigned int tlv[0];
+  unsigned int tlv[];
 };
 #define SNDRV_CTL_IOCTL_PVERSION _IOR('U', 0x00, int)
 #define SNDRV_CTL_IOCTL_CARD_INFO _IOR('U', 0x01, struct snd_ctl_card_info)
diff --git a/libc/kernel/uapi/sound/firewire.h b/libc/kernel/uapi/sound/firewire.h
index 198a8f4..d26d722 100644
--- a/libc/kernel/uapi/sound/firewire.h
+++ b/libc/kernel/uapi/sound/firewire.h
@@ -46,11 +46,11 @@
   __be32 category;
   __be32 command;
   __be32 status;
-  __be32 params[0];
+  __be32 params[];
 };
 struct snd_firewire_event_efw_response {
   unsigned int type;
-  __be32 response[0];
+  __be32 response[];
 };
 struct snd_firewire_event_digi00x_message {
   unsigned int type;
@@ -67,7 +67,7 @@
 };
 struct snd_firewire_event_tascam_control {
   unsigned int type;
-  struct snd_firewire_tascam_change changes[0];
+  struct snd_firewire_tascam_change changes[];
 };
 struct snd_firewire_event_motu_register_dsp_change {
   unsigned int type;
diff --git a/libc/kernel/uapi/sound/skl-tplg-interface.h b/libc/kernel/uapi/sound/skl-tplg-interface.h
index b516a08..6dd9655 100644
--- a/libc/kernel/uapi/sound/skl-tplg-interface.h
+++ b/libc/kernel/uapi/sound/skl-tplg-interface.h
@@ -110,8 +110,8 @@
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 max;
-  char params[0];
-} __packed;
+  char params[];
+} __attribute__((__packed__));
 enum skl_tkn_dir {
   SKL_DIR_IN,
   SKL_DIR_OUT
@@ -123,7 +123,7 @@
 struct skl_dfw_v4_module_pin {
   __u16 module_id;
   __u16 instance_id;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_fmt {
   __u32 channels;
   __u32 freq;
@@ -133,21 +133,21 @@
   __u32 interleaving_style;
   __u32 sample_type;
   __u32 ch_map;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module_caps {
   __u32 set_params : 2;
   __u32 rsvd : 30;
   __u32 param_id;
   __u32 caps_size;
   __u32 caps[HDA_SST_CFG_MAX];
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_pipe {
   __u8 pipe_id;
   __u8 pipe_priority;
   __u16 conn_type : 4;
   __u16 rsvd : 4;
   __u16 memory_pages : 8;
-} __packed;
+} __attribute__((__packed__));
 struct skl_dfw_v4_module {
   char uuid[SKL_UUID_STR_SZ];
   __u16 module_id;
@@ -181,5 +181,5 @@
   struct skl_dfw_v4_module_pin in_pin[MAX_IN_QUEUE];
   struct skl_dfw_v4_module_pin out_pin[MAX_OUT_QUEUE];
   struct skl_dfw_v4_module_caps caps;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/sound/sof/abi.h b/libc/kernel/uapi/sound/sof/abi.h
index 091c8ed..dc4e525 100644
--- a/libc/kernel/uapi/sound/sof/abi.h
+++ b/libc/kernel/uapi/sound/sof/abi.h
@@ -18,8 +18,9 @@
  ****************************************************************************/
 #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
+#include <linux/types.h>
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 21
+#define SOF_ABI_MINOR 23
 #define SOF_ABI_PATCH 0
 #define SOF_ABI_MAJOR_SHIFT 24
 #define SOF_ABI_MAJOR_MASK 0xff
diff --git a/libc/kernel/uapi/sound/sof/fw.h b/libc/kernel/uapi/sound/sof/fw.h
index c36c2b9..97b7de3 100644
--- a/libc/kernel/uapi/sound/sof/fw.h
+++ b/libc/kernel/uapi/sound/sof/fw.h
@@ -46,7 +46,7 @@
   enum snd_sof_fw_blk_type type;
   __u32 size;
   __u32 offset;
-} __packed;
+} __attribute__((__packed__));
 enum snd_sof_fw_mod_type {
   SOF_FW_BASE = 0,
   SOF_FW_MODULE = 1,
@@ -55,11 +55,11 @@
   enum snd_sof_fw_mod_type type;
   __u32 size;
   __u32 num_blocks;
-} __packed;
+} __attribute__((__packed__));
 struct snd_sof_fw_header {
   unsigned char sig[SND_SOF_FW_SIG_SIZE];
   __u32 file_size;
   __u32 num_modules;
   __u32 abi;
-} __packed;
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/sound/sof/header.h b/libc/kernel/uapi/sound/sof/header.h
index 3fbd4a4..7514550 100644
--- a/libc/kernel/uapi/sound/sof/header.h
+++ b/libc/kernel/uapi/sound/sof/header.h
@@ -25,6 +25,19 @@
   __u32 size;
   __u32 abi;
   __u32 reserved[4];
-  __u32 data[0];
-} __packed;
+  __u32 data[];
+} __attribute__((__packed__));
+#define SOF_MANIFEST_DATA_TYPE_NHLT 1
+struct sof_manifest_tlv {
+  __le32 type;
+  __le32 size;
+  __u8 data[];
+};
+struct sof_manifest {
+  __le16 abi_major;
+  __le16 abi_minor;
+  __le16 abi_patch;
+  __le16 count;
+  struct sof_manifest_tlv items[];
+};
 #endif
diff --git a/libc/kernel/uapi/sound/sof/tokens.h b/libc/kernel/uapi/sound/sof/tokens.h
index 856281a..b07ed42 100644
--- a/libc/kernel/uapi/sound/sof/tokens.h
+++ b/libc/kernel/uapi/sound/sof/tokens.h
@@ -37,8 +37,13 @@
 #define SOF_TKN_SCHED_FRAMES 204
 #define SOF_TKN_SCHED_TIME_DOMAIN 205
 #define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
+#define SOF_TKN_SCHED_LP_MODE 207
+#define SOF_TKN_SCHED_MEM_USAGE 208
 #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
 #define SOF_TKN_VOLUME_RAMP_STEP_MS 251
+#define SOF_TKN_GAIN_RAMP_TYPE 260
+#define SOF_TKN_GAIN_RAMP_DURATION 261
+#define SOF_TKN_GAIN_VAL 262
 #define SOF_TKN_SRC_RATE_IN 300
 #define SOF_TKN_SRC_RATE_OUT 301
 #define SOF_TKN_ASRC_RATE_IN 320
@@ -51,6 +56,9 @@
 #define SOF_TKN_COMP_FORMAT 402
 #define SOF_TKN_COMP_CORE_ID 404
 #define SOF_TKN_COMP_UUID 405
+#define SOF_TKN_COMP_CPC 406
+#define SOF_TKN_COMP_IS_PAGES 409
+#define SOF_TKN_COMP_NUM_AUDIO_FORMATS 410
 #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
 #define SOF_TKN_INTEL_SSP_MCLK_ID 501
 #define SOF_TKN_INTEL_SSP_SAMPLE_BITS 502
@@ -90,4 +98,29 @@
 #define SOF_TKN_MEDIATEK_AFE_RATE 1600
 #define SOF_TKN_MEDIATEK_AFE_CH 1601
 #define SOF_TKN_MEDIATEK_AFE_FORMAT 1602
+#define SOF_TKN_MIXER_TYPE 1700
+#define SOF_TKN_AMD_ACPDMIC_RATE 1800
+#define SOF_TKN_AMD_ACPDMIC_CH 1801
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_RATE 1900
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_BIT_DEPTH 1901
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT 1902
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CHANNELS 1903
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_MAP 1904
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_CFG 1905
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT 1932
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CHANNELS 1933
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_MAP 1934
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_CFG 1935
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_INTERLEAVING_STYLE 1936
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_FMT_CFG 1937
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_SAMPLE_TYPE 1938
+#define SOF_TKN_CAVS_AUDIO_FORMAT_IBS 1970
+#define SOF_TKN_CAVS_AUDIO_FORMAT_OBS 1971
+#define SOF_TKN_CAVS_AUDIO_FORMAT_DMA_BUFFER_SIZE 1972
+#define SOF_TKN_INTEL_COPIER_NODE_TYPE 1980
 #endif
diff --git a/libc/kernel/uapi/sound/usb_stream.h b/libc/kernel/uapi/sound/usb_stream.h
index bb7fe80..ac87c31 100644
--- a/libc/kernel/uapi/sound/usb_stream.h
+++ b/libc/kernel/uapi/sound/usb_stream.h
@@ -49,7 +49,7 @@
   unsigned inpacket_split_at;
   unsigned next_inpacket_split;
   unsigned next_inpacket_split_at;
-  struct usb_stream_packet inpacket[0];
+  struct usb_stream_packet inpacket[];
 };
 enum usb_stream_state {
   usb_stream_invalid,
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index dc1b6f6..4a4e607 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -1037,12 +1037,10 @@
     strtold_l; # introduced=21
     strtoll;
     strtoll_l; # introduced=21
-    strtoq; # introduced=21
     strtoul;
     strtoull;
     strtoull_l; # introduced=21
     strtoumax;
-    strtouq; # introduced=21
     strxfrm;
     strxfrm_l; # introduced=21
     swapoff; # introduced-arm=19 introduced-arm64=21 introduced-x86=19 introduced-x86_64=21
@@ -1520,34 +1518,34 @@
     tss_set;
 
     # Unwinder implementation
-    __aeabi_unwind_cpp_pr0; # apex llndk arm
-    __aeabi_unwind_cpp_pr1; # apex llndk arm
-    __aeabi_unwind_cpp_pr2; # apex llndk arm
-    __deregister_frame; # apex llndk arm64 x86 x86_64
-    __gnu_unwind_frame; # apex llndk arm
-    __register_frame; # apex llndk arm64 x86 x86_64
-    _Unwind_Backtrace; # apex llndk
-    _Unwind_Complete; # apex llndk arm
-    _Unwind_DeleteException; # apex llndk
-    _Unwind_Find_FDE; # apex llndk
-    _Unwind_FindEnclosingFunction; # apex llndk
-    _Unwind_ForcedUnwind; # apex llndk arm64 x86 x86_64
-    _Unwind_GetCFA; # apex llndk
-    _Unwind_GetDataRelBase; # apex llndk
-    _Unwind_GetGR; # apex llndk
-    _Unwind_GetIP; # apex llndk
-    _Unwind_GetIPInfo; # apex llndk
-    _Unwind_GetLanguageSpecificData; # apex llndk
-    _Unwind_GetRegionStart; # apex llndk
-    _Unwind_GetTextRelBase; # apex llndk
-    _Unwind_RaiseException; # apex llndk
-    _Unwind_Resume; # apex llndk
-    _Unwind_Resume_or_Rethrow; # apex llndk
-    _Unwind_SetGR; # apex llndk
-    _Unwind_SetIP; # apex llndk
-    _Unwind_VRS_Get; # apex llndk arm
-    _Unwind_VRS_Pop; # apex llndk arm
-    _Unwind_VRS_Set; # apex llndk arm
+    __aeabi_unwind_cpp_pr0; # arm
+    __aeabi_unwind_cpp_pr1; # arm
+    __aeabi_unwind_cpp_pr2; # arm
+    __deregister_frame; # arm64 x86 x86_64
+    __gnu_unwind_frame; # arm
+    __register_frame; # arm64 x86 x86_64
+    _Unwind_Backtrace;
+    _Unwind_Complete; # arm
+    _Unwind_DeleteException;
+    _Unwind_Find_FDE;
+    _Unwind_FindEnclosingFunction;
+    _Unwind_ForcedUnwind; # arm64 x86 x86_64
+    _Unwind_GetCFA;
+    _Unwind_GetDataRelBase;
+    _Unwind_GetGR;
+    _Unwind_GetIP;
+    _Unwind_GetIPInfo;
+    _Unwind_GetLanguageSpecificData;
+    _Unwind_GetRegionStart;
+    _Unwind_GetTextRelBase;
+    _Unwind_RaiseException;
+    _Unwind_Resume;
+    _Unwind_Resume_or_Rethrow;
+    _Unwind_SetGR;
+    _Unwind_SetIP;
+    _Unwind_VRS_Get; # arm
+    _Unwind_VRS_Pop; # arm
+    _Unwind_VRS_Set; # arm
 } LIBC_Q;
 
 LIBC_S { # introduced=S
diff --git a/libc/malloc_debug/PointerData.cpp b/libc/malloc_debug/PointerData.cpp
index 5ab2232..e3a35a6 100644
--- a/libc/malloc_debug/PointerData.cpp
+++ b/libc/malloc_debug/PointerData.cpp
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 
+#include <cxxabi.h>
 #include <errno.h>
 #include <inttypes.h>
 #include <signal.h>
@@ -54,8 +55,6 @@
 #include "malloc_debug.h"
 #include "UnwindBacktrace.h"
 
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
 std::atomic_uint8_t PointerData::backtrace_enabled_;
 std::atomic_bool PointerData::backtrace_dump_;
 
@@ -617,8 +616,8 @@
         if (frame.function_name.empty()) {
           dprintf(fd, " \"\" 0}");
         } else {
-          char* demangled_name = __cxa_demangle(frame.function_name.c_str(), nullptr, nullptr,
-                                                nullptr);
+          char* demangled_name =
+              abi::__cxa_demangle(frame.function_name.c_str(), nullptr, nullptr, nullptr);
           const char* name;
           if (demangled_name != nullptr) {
             name = demangled_name;
diff --git a/libc/malloc_debug/UnwindBacktrace.cpp b/libc/malloc_debug/UnwindBacktrace.cpp
index c892a39..8a6ff7b 100644
--- a/libc/malloc_debug/UnwindBacktrace.cpp
+++ b/libc/malloc_debug/UnwindBacktrace.cpp
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 
+#include <cxxabi.h>
 #include <inttypes.h>
 #include <pthread.h>
 #include <stdint.h>
@@ -48,8 +49,6 @@
 #define PAD_PTR "08" PRIx64
 #endif
 
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
 bool Unwind(std::vector<uintptr_t>* frames, std::vector<unwindstack::FrameData>* frame_info,
             size_t max_frames) {
   [[clang::no_destroy]] static unwindstack::AndroidLocalUnwinder unwinder(
@@ -89,7 +88,8 @@
 
     if (!info->function_name.empty()) {
       line += " (";
-      char* demangled_name = __cxa_demangle(info->function_name.c_str(), nullptr, nullptr, nullptr);
+      char* demangled_name =
+          abi::__cxa_demangle(info->function_name.c_str(), nullptr, nullptr, nullptr);
       if (demangled_name != nullptr) {
         line += demangled_name;
         free(demangled_name);
diff --git a/libc/malloc_debug/backtrace.cpp b/libc/malloc_debug/backtrace.cpp
index ab5c505..ecb3a80 100644
--- a/libc/malloc_debug/backtrace.cpp
+++ b/libc/malloc_debug/backtrace.cpp
@@ -26,6 +26,7 @@
  * SUCH DAMAGE.
  */
 
+#include <cxxabi.h>
 #include <dlfcn.h>
 #include <errno.h>
 #include <inttypes.h>
@@ -48,8 +49,6 @@
 
 typedef struct _Unwind_Context __unwind_context;
 
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
 static MapData g_map_data;
 static const MapEntry* g_current_code_map = nullptr;
 
@@ -83,41 +82,24 @@
 
   uintptr_t ip = _Unwind_GetIP(context);
 
-  // The instruction pointer is pointing at the instruction after the return
-  // call on all architectures.
-  // Modify the pc to point at the real function.
-  if (ip != 0) {
-#if defined(__arm__)
-    // If the ip is suspiciously low, do nothing to avoid a segfault trying
-    // to access this memory.
-    if (ip >= 4096) {
-      // Check bits [15:11] of the first halfword assuming the instruction
-      // is 32 bits long. If the bits are any of these values, then our
-      // assumption was correct:
-      //  b11101
-      //  b11110
-      //  b11111
-      // Otherwise, this is a 16 bit instruction.
-      uint16_t value = (*reinterpret_cast<uint16_t*>(ip - 2)) >> 11;
-      if (value == 0x1f || value == 0x1e || value == 0x1d) {
-        ip -= 4;
-      } else {
-        ip -= 2;
-      }
-    }
-#elif defined(__aarch64__)
-    // All instructions are 4 bytes long, skip back one instruction.
-    ip -= 4;
+  // `ip` is the address of the instruction *after* the call site in
+  // `context`, so we want to back up by one instruction. This is hard for
+  // every architecture except arm64, so we just make sure we're *inside*
+  // that instruction, not necessarily at the start of it. (If the value
+  // is too low to be valid, we just leave it alone.)
+  if (ip >= 4096) {
+#if defined(__aarch64__)
+    ip -= 4;  // Exactly.
+#elif defined(__arm__) || defined(__riscv)
+    ip -= 2;  // At least.
 #elif defined(__i386__) || defined(__x86_64__)
-    // It's difficult to decode exactly where the previous instruction is,
-    // so subtract 1 to estimate where the instruction lives.
-    ip--;
+    ip -= 1;  // At least.
 #endif
+  }
 
-    // Do not record the frames that fall in our own shared library.
-    if (g_current_code_map && (ip >= g_current_code_map->start) && ip < g_current_code_map->end) {
-      return _URC_NO_REASON;
-    }
+  // Do not record the frames that fall in our own shared library.
+  if (g_current_code_map && (ip >= g_current_code_map->start) && ip < g_current_code_map->end) {
+    return _URC_NO_REASON;
   }
 
   state->frames[state->cur_frame++] = ip;
@@ -162,7 +144,7 @@
 
     char buf[1024];
     if (symbol != nullptr) {
-      char* demangled_name = __cxa_demangle(symbol, nullptr, nullptr, nullptr);
+      char* demangled_name = abi::__cxa_demangle(symbol, nullptr, nullptr, nullptr);
       const char* name;
       if (demangled_name != nullptr) {
         name = demangled_name;
diff --git a/libc/tools/gensyscalls.py b/libc/tools/gensyscalls.py
index d3e6ef4..a525a98 100755
--- a/libc/tools/gensyscalls.py
+++ b/libc/tools/gensyscalls.py
@@ -333,10 +333,12 @@
 class SysCallsTxtParser:
     def __init__(self):
         self.syscalls = []
-        self.lineno   = 0
+        self.lineno = 0
+        self.errors = False
 
     def E(self, msg):
         print("%d: %s" % (self.lineno, msg))
+        self.errors = True
 
     def parse_line(self, line):
         """ parse a syscall spec line.
@@ -443,6 +445,8 @@
             if not line: continue
             if line[0] == '#': continue
             self.parse_line(line)
+        if self.errors:
+            sys.exit(1)
 
     def parse_file(self, file_path):
         with open(file_path) as fp:
diff --git a/libc/upstream-netbsd/android/include/netbsd-compat.h b/libc/upstream-netbsd/android/include/netbsd-compat.h
index 5dd086e..a625f06 100644
--- a/libc/upstream-netbsd/android/include/netbsd-compat.h
+++ b/libc/upstream-netbsd/android/include/netbsd-compat.h
@@ -43,6 +43,8 @@
 #include <stddef.h>
 int reallocarr(void*, size_t, size_t);
 
+#define __arraycount(a) (sizeof(a) / sizeof(a[0]))
+
 /* Use appropriate shell depending on process's executable. */
 __LIBC_HIDDEN__ extern const char* __bionic_get_shell_path();
 #define _PATH_BSHELL __bionic_get_shell_path()
diff --git a/libc/upstream-netbsd/lib/libc/include/isc/list.h b/libc/upstream-netbsd/lib/libc/include/isc/list.h
index 46f2e79..76dc097 100644
--- a/libc/upstream-netbsd/lib/libc/include/isc/list.h
+++ b/libc/upstream-netbsd/lib/libc/include/isc/list.h
@@ -1,4 +1,4 @@
-/*	$NetBSD: list.h,v 1.5 2009/04/12 17:07:16 christos Exp $	*/
+/*	$NetBSD: list.h,v 1.6 2022/04/19 20:32:15 rillig Exp $	*/
 
 /*
  * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
@@ -23,14 +23,14 @@
 
 #define LIST(type) struct { type *head, *tail; }
 #define INIT_LIST(list) \
-	do { (list).head = NULL; (list).tail = NULL; } while (/*CONSTCOND*/0)
+	do { (list).head = NULL; (list).tail = NULL; } while (0)
 
 #define LINK(type) struct { type *prev, *next; }
 #define INIT_LINK_TYPE(elt, link, type) \
 	do { \
 		(elt)->link.prev = (type *)(-1); \
 		(elt)->link.next = (type *)(-1); \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 #define INIT_LINK(elt, link) \
 	INIT_LINK_TYPE(elt, link, void)
 #define LINKED(elt, link) ((void *)((elt)->link.prev) != (void *)(-1) && \
@@ -50,7 +50,7 @@
 		(elt)->link.prev = NULL; \
 		(elt)->link.next = (list).head; \
 		(list).head = (elt); \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 
 #define APPEND(list, elt, link) \
 	do { \
@@ -62,7 +62,7 @@
 		(elt)->link.prev = (list).tail; \
 		(elt)->link.next = NULL; \
 		(list).tail = (elt); \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 
 #define UNLINK_TYPE(list, elt, link, type) \
 	do { \
@@ -80,7 +80,7 @@
 			(list).head = (elt)->link.next; \
 		} \
 		INIT_LINK_TYPE(elt, link, type); \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 #define UNLINK(list, elt, link) \
 	UNLINK_TYPE(list, elt, link, void)
 
@@ -98,7 +98,7 @@
 			(elt)->link.prev->link.next = (elt); \
 			(elt)->link.next = (before); \
 		} \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 
 #define INSERT_AFTER(list, after, elt, link) \
 	do { \
@@ -111,7 +111,7 @@
 			(elt)->link.next->link.prev = (elt); \
 			(elt)->link.prev = (after); \
 		} \
-	} while (/*CONSTCOND*/0)
+	} while (0)
 
 #define ENQUEUE(list, elt, link) APPEND(list, elt, link)
 #define DEQUEUE(list, elt, link) UNLINK(list, elt, link)
diff --git a/libc/upstream-netbsd/lib/libc/regex/cclass.h b/libc/upstream-netbsd/lib/libc/regex/cclass.h
deleted file mode 100644
index 3ab2ccb..0000000
--- a/libc/upstream-netbsd/lib/libc/regex/cclass.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/*	$NetBSD: cclass.h,v 1.7 2003/08/07 16:43:19 agc Exp $	*/
-
-/*-
- * Copyright (c) 1992, 1993, 1994
- *	The Regents of the University of California.  All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * 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.
- *
- *	@(#)cclass.h	8.3 (Berkeley) 3/20/94
- */
-
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)cclass.h	8.3 (Berkeley) 3/20/94
- */
-
-/* character-class table */
-static const struct cclass {
-	const char *name;
-	const char *chars;
-	const char *multis;
-} cclasses[] = {
-	{ "alnum",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
-0123456789",				"" },
-	{ "alpha",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
-					"" },
-	{ "blank",	" \t",		"" },
-	{ "cntrl",	"\007\b\t\n\v\f\r\1\2\3\4\5\6\16\17\20\21\22\23\24\
-\25\26\27\30\31\32\33\34\35\36\37\177",	"" },
-	{ "digit",	"0123456789",	"" },
-	{ "graph",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
-0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
-					"" },
-	{ "lower",	"abcdefghijklmnopqrstuvwxyz",
-					"" },
-	{ "print",	"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\
-0123456789!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~ ",
-					"" },
-	{ "punct",	"!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
-					"" },
-	{ "space",	"\t\n\v\f\r ",	"" },
-	{ "upper",	"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
-					"" },
-	{ "xdigit",	"0123456789ABCDEFabcdef",
-					"" },
-	{ NULL,		0,		"" }
-};
diff --git a/libc/upstream-netbsd/lib/libc/regex/cname.h b/libc/upstream-netbsd/lib/libc/regex/cname.h
index 4b9ef39..47e57ac 100644
--- a/libc/upstream-netbsd/lib/libc/regex/cname.h
+++ b/libc/upstream-netbsd/lib/libc/regex/cname.h
@@ -1,6 +1,9 @@
-/*	$NetBSD: cname.h,v 1.7 2003/08/07 16:43:19 agc Exp $	*/
+/*	$NetBSD: cname.h,v 1.8 2021/02/23 22:14:59 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -32,144 +35,108 @@
  * SUCH DAMAGE.
  *
  *	@(#)cname.h	8.3 (Berkeley) 3/20/94
- */
-
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)cname.h	8.3 (Berkeley) 3/20/94
+ * $FreeBSD: head/lib/libc/regex/cname.h 326025 2017-11-20 19:49:47Z pfg $
  */
 
 /* character-name table */
-static const struct cname {
+static struct cname {
 	const char *name;
 	char code;
 } cnames[] = {
-	{ "NUL",			'\0' },
-	{ "SOH",			'\001' },
-	{ "STX",			'\002' },
-	{ "ETX",			'\003' },
-	{ "EOT",			'\004' },
-	{ "ENQ",			'\005' },
-	{ "ACK",			'\006' },
-	{ "BEL",			'\007' },
-	{ "alert",			'\007' },
-	{ "BS",				'\010' },
-	{ "backspace",			'\b' },
-	{ "HT",				'\011' },
-	{ "tab",			'\t' },
-	{ "LF",				'\012' },
-	{ "newline",			'\n' },
-	{ "VT",				'\013' },
-	{ "vertical-tab",		'\v' },
-	{ "FF",				'\014' },
-	{ "form-feed",			'\f' },
-	{ "CR",				'\015' },
-	{ "carriage-return",		'\r' },
-	{ "SO",				'\016' },
-	{ "SI",				'\017' },
-	{ "DLE",			'\020' },
-	{ "DC1",			'\021' },
-	{ "DC2",			'\022' },
-	{ "DC3",			'\023' },
-	{ "DC4",			'\024' },
-	{ "NAK",			'\025' },
-	{ "SYN",			'\026' },
-	{ "ETB",			'\027' },
-	{ "CAN",			'\030' },
-	{ "EM",				'\031' },
-	{ "SUB",			'\032' },
-	{ "ESC",			'\033' },
-	{ "IS4",			'\034' },
-	{ "FS",				'\034' },
-	{ "IS3",			'\035' },
-	{ "GS",				'\035' },
-	{ "IS2",			'\036' },
-	{ "RS",				'\036' },
-	{ "IS1",			'\037' },
-	{ "US",				'\037' },
-	{ "space",			' ' },
-	{ "exclamation-mark",		'!' },
-	{ "quotation-mark",		'"' },
-	{ "number-sign",		'#' },
-	{ "dollar-sign",		'$' },
-	{ "percent-sign",		'%' },
-	{ "ampersand",			'&' },
-	{ "apostrophe",			'\'' },
-	{ "left-parenthesis",		'(' },
-	{ "right-parenthesis",		')' },
-	{ "asterisk",			'*' },
-	{ "plus-sign",			'+' },
-	{ "comma",			',' },
-	{ "hyphen",			'-' },
-	{ "hyphen-minus",		'-' },
-	{ "period",			'.' },
-	{ "full-stop",			'.' },
-	{ "slash",			'/' },
-	{ "solidus",			'/' },
-	{ "zero",			'0' },
-	{ "one",			'1' },
-	{ "two",			'2' },
-	{ "three",			'3' },
-	{ "four",			'4' },
-	{ "five",			'5' },
-	{ "six",			'6' },
-	{ "seven",			'7' },
-	{ "eight",			'8' },
-	{ "nine",			'9' },
-	{ "colon",			':' },
-	{ "semicolon",			';' },
-	{ "less-than-sign",		'<' },
-	{ "equals-sign",		'=' },
-	{ "greater-than-sign",		'>' },
-	{ "question-mark",		'?' },
-	{ "commercial-at",		'@' },
-	{ "left-square-bracket",	'[' },
-	{ "backslash",			'\\' },
-	{ "reverse-solidus",		'\\' },
-	{ "right-square-bracket",	']' },
-	{ "circumflex",			'^' },
-	{ "circumflex-accent",		'^' },
-	{ "underscore",			'_' },
-	{ "low-line",			'_' },
-	{ "grave-accent",		'`' },
-	{ "left-brace",			'{' },
-	{ "left-curly-bracket",		'{' },
-	{ "vertical-line",		'|' },
-	{ "right-brace",		'}' },
-	{ "right-curly-bracket",	'}' },
-	{ "tilde",			'~' },
-	{ "DEL",			'\177' },
-	{ NULL,				0 },
+	{"NUL",			'\0'},
+	{"SOH",			'\001'},
+	{"STX",			'\002'},
+	{"ETX",			'\003'},
+	{"EOT",			'\004'},
+	{"ENQ",			'\005'},
+	{"ACK",			'\006'},
+	{"BEL",			'\007'},
+	{"alert",		'\007'},
+	{"BS",			'\010'},
+	{"backspace",		'\b'},
+	{"HT",			'\011'},
+	{"tab",			'\t'},
+	{"LF",			'\012'},
+	{"newline",		'\n'},
+	{"VT",			'\013'},
+	{"vertical-tab",	'\v'},
+	{"FF",			'\014'},
+	{"form-feed",		'\f'},
+	{"CR",			'\015'},
+	{"carriage-return",	'\r'},
+	{"SO",			'\016'},
+	{"SI",			'\017'},
+	{"DLE",			'\020'},
+	{"DC1",			'\021'},
+	{"DC2",			'\022'},
+	{"DC3",			'\023'},
+	{"DC4",			'\024'},
+	{"NAK",			'\025'},
+	{"SYN",			'\026'},
+	{"ETB",			'\027'},
+	{"CAN",			'\030'},
+	{"EM",			'\031'},
+	{"SUB",			'\032'},
+	{"ESC",			'\033'},
+	{"IS4",			'\034'},
+	{"FS",			'\034'},
+	{"IS3",			'\035'},
+	{"GS",			'\035'},
+	{"IS2",			'\036'},
+	{"RS",			'\036'},
+	{"IS1",			'\037'},
+	{"US",			'\037'},
+	{"space",		' '},
+	{"exclamation-mark",	'!'},
+	{"quotation-mark",	'"'},
+	{"number-sign",		'#'},
+	{"dollar-sign",		'$'},
+	{"percent-sign",	'%'},
+	{"ampersand",		'&'},
+	{"apostrophe",		'\''},
+	{"left-parenthesis",	'('},
+	{"right-parenthesis",	')'},
+	{"asterisk",		'*'},
+	{"plus-sign",		'+'},
+	{"comma",		','},
+	{"hyphen",		'-'},
+	{"hyphen-minus",	'-'},
+	{"period",		'.'},
+	{"full-stop",		'.'},
+	{"slash",		'/'},
+	{"solidus",		'/'},
+	{"zero",		'0'},
+	{"one",			'1'},
+	{"two",			'2'},
+	{"three",		'3'},
+	{"four",		'4'},
+	{"five",		'5'},
+	{"six",			'6'},
+	{"seven",      		'7'},
+	{"eight",		'8'},
+	{"nine",		'9'},
+	{"colon",		':'},
+	{"semicolon",		';'},
+	{"less-than-sign",	'<'},
+	{"equals-sign",		'='},
+	{"greater-than-sign",	'>'},
+	{"question-mark",	'?'},
+	{"commercial-at",	'@'},
+	{"left-square-bracket",	'['},
+	{"backslash",		'\\'},
+	{"reverse-solidus",	'\\'},
+	{"right-square-bracket",']'},
+	{"circumflex",		'^'},
+	{"circumflex-accent",	'^'},
+	{"underscore",		'_'},
+	{"low-line",		'_'},
+	{"grave-accent",	'`'},
+	{"left-brace",		'{'},
+	{"left-curly-bracket",	'{'},
+	{"vertical-line",	'|'},
+	{"right-brace",		'}'},
+	{"right-curly-bracket",	'}'},
+	{"tilde",		'~'},
+	{"DEL",	'\177'},
+	{NULL,	0}
 };
diff --git a/libc/upstream-netbsd/lib/libc/regex/engine.c b/libc/upstream-netbsd/lib/libc/regex/engine.c
index 2a800d4..ca8b24d 100644
--- a/libc/upstream-netbsd/lib/libc/regex/engine.c
+++ b/libc/upstream-netbsd/lib/libc/regex/engine.c
@@ -1,6 +1,9 @@
-/*	$NetBSD: engine.c,v 1.24 2012/03/13 21:13:42 christos Exp $	*/
+/* $NetBSD: engine.c,v 1.29 2021/02/25 21:47:46 christos Exp $ */
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -34,42 +37,13 @@
  *	@(#)engine.c	8.5 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)engine.c	8.5 (Berkeley) 3/20/94
- */
+#include <sys/cdefs.h>
+#ifdef __FBSDID
+__FBSDID("$FreeBSD: head/lib/libc/regex/engine.c 368358 2020-12-05 03:16:05Z kevans $");
+#endif
+__RCSID("$NetBSD: engine.c,v 1.29 2021/02/25 21:47:46 christos Exp $");
+
+#include <stdbool.h>
 
 /*
  * The matching engine and friends.  This file is #included by regexec.c
@@ -79,28 +53,37 @@
  */
 
 #ifdef SNAMES
+#define	stepback sstepback
 #define	matcher	smatcher
-#define	fast	sfast
-#define	slow	sslow
+#define	walk	swalk
 #define	dissect	sdissect
 #define	backref	sbackref
 #define	step	sstep
 #define	print	sprint
 #define	at	sat
 #define	match	smat
-#define	nope	snope
 #endif
 #ifdef LNAMES
+#define	stepback lstepback
 #define	matcher	lmatcher
-#define	fast	lfast
-#define	slow	lslow
+#define	walk	lwalk
 #define	dissect	ldissect
 #define	backref	lbackref
 #define	step	lstep
 #define	print	lprint
 #define	at	lat
 #define	match	lmat
-#define	nope	lnope
+#endif
+#ifdef MNAMES
+#define	stepback mstepback
+#define	matcher	mmatcher
+#define	walk	mwalk
+#define	dissect	mdissect
+#define	backref	mbackref
+#define	step	mstep
+#define	print	mprint
+#define	at	mat
+#define	match	mmat
 #endif
 
 /* another structure passed up and down to avoid zillions of parameters */
@@ -118,6 +101,7 @@
 	states fresh;		/* states for a fresh start */
 	states tmp;		/* temporary */
 	states empty;		/* empty set of states */
+	mbstate_t mbs;		/* multibyte conversion state */
 };
 
 /* ========= begin header generated by ./mkh ========= */
@@ -128,27 +112,31 @@
 /* === engine.c === */
 static int matcher(struct re_guts *g, const char *string, size_t nmatch, regmatch_t pmatch[], int eflags);
 static const char *dissect(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
-static const char *backref(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, sopno lev);
-static const char *fast(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
-static const char *slow(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst);
-static states step(struct re_guts *g, sopno start, sopno stop, states bef, int ch, states aft);
-#define	BOL	(OUT+1)
-#define	EOL	(BOL+1)
-#define	BOLEOL	(BOL+2)
-#define	NOTHING	(BOL+3)
-#define	BOW	(BOL+4)
-#define	EOW	(BOL+5)
-#define	CODEMAX	(BOL+5)		/* highest code used */
-#define	NONCHAR(c)	((c) > CHAR_MAX)
-#define	NNONCHAR	(CODEMAX-CHAR_MAX)
+static const char *backref(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, sopno lev, int);
+static const char *walk(struct match *m, const char *start, const char *stop, sopno startst, sopno stopst, bool fast);
+static states step(struct re_guts *g, sopno start, sopno stop, states bef, wint_t ch, states aft, int sflags);
+#define MAX_RECURSION	100
+#define	BOL	(OUT-1)
+#define	EOL	(BOL-1)
+#define	BOLEOL	(BOL-2)
+#define	NOTHING	(BOL-3)
+#define	BOW	(BOL-4)
+#define	EOW	(BOL-5)
+#define	BADCHAR	(BOL-6)
+#define	NWBND	(BOL-7)
+#define	NONCHAR(c)	((c) <= OUT)
+/* sflags */
+#define	SBOS	0x0001
+#define	SEOS	0x0002
+
 #ifdef REDEBUG
-static void print(struct match *m, char *caption, states st, int ch, FILE *d);
+static void print(struct match *m, const char *caption, states st, int ch, FILE *d);
 #endif
 #ifdef REDEBUG
-static void at(struct match *m, char *title, char *start, char *stop, sopno startst, sopno stopst);
+static void at(struct match *m, const char *title, const char *start, const char *stop, sopno startst, sopno stopst);
 #endif
 #ifdef REDEBUG
-static char *pchar(int ch);
+static const char *pchar(int ch);
 #endif
 
 #ifdef __cplusplus
@@ -160,7 +148,6 @@
 #define	SP(t, s, c)	print(m, t, s, c, stdout)
 #define	AT(t, p1, p2, s1, s2)	at(m, t, p1, p2, s1, s2)
 #define	NOTE(str)	{ if (m->eflags&REG_TRACE) printf("=%s\n", (str)); }
-static int nope = 0;
 #else
 #define	SP(t, s, c)	/* nothing */
 #define	AT(t, p1, p2, s1, s2)	/* nothing */
@@ -168,27 +155,70 @@
 #endif
 
 /*
+ * Given a multibyte string pointed to by start, step back nchar characters
+ * from current position pointed to by cur.
+ */
+static const char *
+stepback(const char *start, const char *cur, int nchar)
+{
+#ifdef NLS
+	const char *ret;
+	size_t wc, mbc;
+	mbstate_t mbs;
+	size_t clen;
+
+	if (MB_CUR_MAX == 1)
+		goto out;
+
+	ret = cur;
+	for (wc = nchar; wc > 0; wc--) {
+		for (mbc = 1; mbc <= MB_CUR_MAX; mbc++) {
+			if ((ret - mbc) < start)
+				return (NULL);
+			memset(&mbs, 0, sizeof(mbs));
+			clen = mbrtowc(NULL, ret - mbc, mbc, &mbs);
+			if (clen != (size_t)-1 && clen != (size_t)-2)
+				break;
+		}
+		if (mbc > MB_CUR_MAX)
+			return (NULL);
+		ret -= mbc;
+	}
+
+	return (ret);
+out:
+#endif
+	return (cur - nchar) > start ? cur - nchar : NULL;
+}
+
+/*
  - matcher - the actual matching engine
- == static int matcher(struct re_guts *g, char *string, \
+ == static int matcher(struct re_guts *g, const char *string, \
  ==	size_t nmatch, regmatch_t pmatch[], int eflags);
  */
 static int			/* 0 success, REG_NOMATCH failure */
-matcher(
-    struct re_guts *g,
-    const char *string,
-    size_t nmatch,
-    regmatch_t pmatch[],
-    int eflags)
+matcher(struct re_guts *g,
+	const char *string,
+	size_t nmatch,
+	regmatch_t pmatch[],
+	int eflags)
 {
 	const char *endp;
 	size_t i;
 	struct match mv;
 	struct match *m = &mv;
-	const char *dp;
+	const char *dp = NULL;
 	const sopno gf = g->firststate+1;	/* +1 for OEND */
 	const sopno gl = g->laststate;
 	const char *start;
 	const char *stop;
+	/* Boyer-Moore algorithms variables */
+	const char *pp;
+	size_t cj, mj;
+	const char *mustfirst;
+	const char *mustlast;
+	size_t *matchjump;
+	size_t *charjump;
 	int error = 0;
 
 	_DIAGASSERT(g != NULL);
@@ -211,12 +241,46 @@
 
 	/* prescreening; this does wonders for this rather slow code */
 	if (g->must != NULL) {
-		for (dp = start; dp < stop; dp++)
-			if (*dp == g->must[0] && (size_t)(stop - dp) >= g->mlen &&
-				memcmp(dp, g->must, g->mlen) == 0)
-				break;
-		if (dp == stop)		/* we didn't find g->must */
-			return(REG_NOMATCH);
+		if (g->charjump != NULL && g->matchjump != NULL) {
+			mustfirst = g->must;
+			mustlast = g->must + g->mlen - 1;
+			charjump = g->charjump;
+			matchjump = g->matchjump;
+			pp = mustlast;
+			for (dp = start+g->mlen-1; dp < stop;) {
+				/* Fast skip non-matches */
+				while (dp < stop && charjump[(int)*dp])
+					dp += charjump[(int)*dp];
+
+				if (dp >= stop)
+					break;
+
+				/* Greedy matcher */
+				/* We depend on not being used for
+				 * for strings of length 1
+				 */
+				while (*--dp == *--pp && pp != mustfirst);
+
+				if (*dp == *pp)
+					break;
+
+				/* Jump to next possible match */
+				mj = matchjump[pp - mustfirst];
+				cj = charjump[(int)*dp];
+				dp += (cj < mj ? mj : cj);
+				pp = mustlast;
+			}
+			if (pp != mustfirst)
+				return(REG_NOMATCH);
+		} else {
+			for (dp = start; dp < stop; dp++)
+				if (*dp == g->must[0] &&
+				    (size_t)(stop - dp) >= g->mlen &&
+				    memcmp(dp, g->must, (size_t)g->mlen) == 0)
+					break;
+			if (dp == stop)		/* we didn't find g->must */
+				return(REG_NOMATCH);
+		}
 	}
 
 	/* match struct setup */
@@ -233,10 +297,22 @@
 	SETUP(m->tmp);
 	SETUP(m->empty);
 	CLEAR(m->empty);
+	ZAPSTATE(&m->mbs);
+
+	/* Adjust start according to moffset, to speed things up */
+	if (dp != NULL && g->moffset > -1) {
+		const char *nstart;
+
+		nstart = stepback(start, dp, g->moffset);
+		if (nstart != NULL)
+			start = nstart;
+	}
+
+	SP("mloop", m->st, *start);
 
 	/* this loop does only one repetition except for backrefs */
 	for (;;) {
-		endp = fast(m, start, stop, gf, gl);
+		endp = walk(m, start, stop, gf, gl, true);
 		if (endp == NULL) {		/* a miss */
 			error = REG_NOMATCH;
 			goto done;
@@ -248,11 +324,12 @@
 		assert(m->coldp != NULL);
 		for (;;) {
 			NOTE("finding start");
-			endp = slow(m, m->coldp, stop, gf, gl);
+			endp = walk(m, m->coldp, stop, gf, gl, false);
 			if (endp != NULL)
 				break;
 			assert(m->coldp < m->endp);
-			m->coldp++;
+			m->coldp += XMBRTOWC(NULL, m->coldp,
+			    (size_t)(m->endp - m->coldp), &m->mbs, 0);
 		}
 		if (nmatch == 1 && !g->backrefs)
 			break;		/* no further info needed */
@@ -266,20 +343,20 @@
 			goto done;
 		}
 		for (i = 1; i <= m->g->nsub; i++)
-			m->pmatch[i].rm_so = m->pmatch[i].rm_eo = (regoff_t)-1;
+			m->pmatch[i].rm_so = m->pmatch[i].rm_eo = -1;
 		if (!g->backrefs && !(m->eflags&REG_BACKR)) {
 			NOTE("dissecting");
 			dp = dissect(m, m->coldp, endp, gf, gl);
 		} else {
 			if (g->nplus > 0 && m->lastpos == NULL)
 				m->lastpos = malloc((g->nplus+1) *
-							sizeof(const char *));
+						sizeof(const char *));
 			if (g->nplus > 0 && m->lastpos == NULL) {
 				error = REG_ESPACE;
 				goto done;
 			}
 			NOTE("backref dissect");
-			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0);
+			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0, 0);
 		}
 		if (dp != NULL)
 			break;
@@ -291,7 +368,7 @@
 			if (dp != NULL || endp <= m->coldp)
 				break;		/* defeat */
 			NOTE("backoff");
-			endp = slow(m, m->coldp, endp-1, gf, gl);
+			endp = walk(m, m->coldp, endp-1, gf, gl, false);
 			if (endp == NULL)
 				break;		/* defeat */
 			/* try it on a shorter possibility */
@@ -302,7 +379,7 @@
 			}
 #endif
 			NOTE("backoff dissect");
-			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0);
+			dp = backref(m, m->coldp, endp, gf, gl, (sopno)0, 0);
 		}
 		assert(dp == NULL || dp == endp);
 		if (dp != NULL)		/* found a shorter one */
@@ -310,7 +387,9 @@
 
 		/* despite initial appearances, there is no match here */
 		NOTE("false alarm");
-		start = m->coldp + 1;	/* recycle starting later */
+		/* recycle starting later */
+		start = m->coldp + XMBRTOWC(NULL, m->coldp,
+		    (size_t)(stop - m->coldp), &m->mbs, 0);
 		assert(start <= stop);
 	}
 
@@ -337,7 +416,7 @@
 		m->pmatch = NULL;
 	}
 	if (m->lastpos != NULL) {
-		free(m->lastpos);
+		free(__UNCONST(m->lastpos));
 		m->lastpos = NULL;
 	}
 	STATETEARDOWN(m);
@@ -349,29 +428,27 @@
  == static const char *dissect(struct match *m, const char *start, \
  ==	const char *stop, sopno startst, sopno stopst);
  */
-static const char *			/* == stop (success) always */
+static const char *		/* == stop (success) always */
 dissect(
-    struct match *m,
-    const char *start,
-    const char *stop,
-    sopno startst,
-    sopno stopst)
+	struct match *m,
+	const char *start,
+	const char *stop,
+	sopno startst,
+	sopno stopst)
 {
 	int i;
-	sopno ss;	/* start sop of current subRE */
-	sopno es;	/* end sop of current subRE */
-	const char *sp;	/* start of string matched by it */
-	const char *stp; /* string matched by it cannot pass here */
-	const char *rest; /* start of rest of string */
-	const char *tail; /* string unmatched by rest of RE */
-	sopno ssub;	/* start sop of subsubRE */
-	sopno esub;	/* end sop of subsubRE */
-	const char *ssp; /* start of string matched by subsubRE */
-	const char *sep; /* end of string matched by subsubRE */
-	const char *oldssp; /* previous ssp */
-#ifndef NDEBUG
-	const char *dp;
-#endif
+	sopno ss;		/* start sop of current subRE */
+	sopno es;		/* end sop of current subRE */
+	const char *sp;		/* start of string matched by it */
+	const char *stp;	/* string matched by it cannot pass here */
+	const char *rest;	/* start of rest of string */
+	const char *tail;	/* string unmatched by rest of RE */
+	sopno ssub;		/* start sop of subsubRE */
+	sopno esub;		/* end sop of subsubRE */
+	const char *ssp;	/* start of string matched by subsubRE */
+	const char *sep;	/* end of string matched by subsubRE */
+	const char *oldssp;	/* previous ssp */
+	const char *dp __unused;
 
 	_DIAGASSERT(m != NULL);
 	_DIAGASSERT(start != NULL);
@@ -400,16 +477,22 @@
 			assert(nope);
 			break;
 		case OCHAR:
-			sp++;
+			sp += XMBRTOWC(NULL, sp, (size_t)(stop - start),
+			    &m->mbs, 0);
 			break;
 		case OBOL:
 		case OEOL:
 		case OBOW:
 		case OEOW:
+		case OBOS:
+		case OEOS:
+		case OWBND:
+		case ONWBND:
 			break;
 		case OANY:
 		case OANYOF:
-			sp++;
+			sp += XMBRTOWC(NULL, sp, (size_t)(stop - start),
+			    &m->mbs, 0);
 			break;
 		case OBACK_:
 		case O_BACK:
@@ -420,10 +503,10 @@
 			stp = stop;
 			for (;;) {
 				/* how long could this one be? */
-				rest = slow(m, sp, stp, ss, es);
+				rest = walk(m, sp, stp, ss, es, false);
 				assert(rest != NULL);	/* it did match */
 				/* could the rest match the rest? */
-				tail = slow(m, rest, stop, es, stopst);
+				tail = walk(m, rest, stop, es, stopst, false);
 				if (tail == stop)
 					break;		/* yes! */
 				/* no -- try a shorter match for this one */
@@ -433,13 +516,8 @@
 			ssub = ss + 1;
 			esub = es - 1;
 			/* did innards match? */
-			if (slow(m, sp, rest, ssub, esub) != NULL) {
-#ifdef NDEBUG
-				(void)
-#else
-				dp = 
-#endif
-				    dissect(m, sp, rest, ssub, esub);
+			if (walk(m, sp, rest, ssub, esub, false) != NULL) {
+				dp = dissect(m, sp, rest, ssub, esub);
 				assert(dp == rest);
 			} else		/* no */
 				assert(sp == rest);
@@ -449,10 +527,10 @@
 			stp = stop;
 			for (;;) {
 				/* how long could this one be? */
-				rest = slow(m, sp, stp, ss, es);
+				rest = walk(m, sp, stp, ss, es, false);
 				assert(rest != NULL);	/* it did match */
 				/* could the rest match the rest? */
-				tail = slow(m, rest, stop, es, stopst);
+				tail = walk(m, rest, stop, es, stopst, false);
 				if (tail == stop)
 					break;		/* yes! */
 				/* no -- try a shorter match for this one */
@@ -464,7 +542,7 @@
 			ssp = sp;
 			oldssp = ssp;
 			for (;;) {	/* find last match of innards */
-				sep = slow(m, ssp, rest, ssub, esub);
+				sep = walk(m, ssp, rest, ssub, esub, false);
 				if (sep == NULL || sep == ssp)
 					break;	/* failed or matched null */
 				oldssp = ssp;	/* on to next try */
@@ -476,13 +554,8 @@
 				ssp = oldssp;
 			}
 			assert(sep == rest);	/* must exhaust substring */
-			assert(slow(m, ssp, sep, ssub, esub) == rest);
-#ifdef NDEBUG
-			(void)
-#else
-			dp =
-#endif
-			    dissect(m, ssp, sep, ssub, esub);
+			assert(walk(m, ssp, sep, ssub, esub, false) == rest);
+			dp = dissect(m, ssp, sep, ssub, esub);
 			assert(dp == sep);
 			sp = rest;
 			break;
@@ -490,10 +563,10 @@
 			stp = stop;
 			for (;;) {
 				/* how long could this one be? */
-				rest = slow(m, sp, stp, ss, es);
+				rest = walk(m, sp, stp, ss, es, false);
 				assert(rest != NULL);	/* it did match */
 				/* could the rest match the rest? */
-				tail = slow(m, rest, stop, es, stopst);
+				tail = walk(m, rest, stop, es, stopst, false);
 				if (tail == stop)
 					break;		/* yes! */
 				/* no -- try a shorter match for this one */
@@ -504,7 +577,7 @@
 			esub = ss + OPND(m->g->strip[ss]) - 1;
 			assert(OP(m->g->strip[esub]) == OOR1);
 			for (;;) {	/* find first matching branch */
-				if (slow(m, sp, rest, ssub, esub) == rest)
+				if (walk(m, sp, rest, ssub, esub, false) == rest)
 					break;	/* it matched all of it */
 				/* that one missed, try next one */
 				assert(OP(m->g->strip[esub]) == OOR1);
@@ -517,12 +590,7 @@
 				else
 					assert(OP(m->g->strip[esub]) == O_CH);
 			}
-#ifdef NDEBUG
-			(void)
-#else
-			dp =
-#endif
-			    dissect(m, sp, rest, ssub, esub);
+			dp = dissect(m, sp, rest, ssub, esub);
 			assert(dp == rest);
 			sp = rest;
 			break;
@@ -553,6 +621,17 @@
 	return(sp);
 }
 
+#define	ISBOW(m, sp)					\
+    (sp < m->endp && ISWORD(*sp) &&			\
+    ((sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||	\
+    (sp > m->offp && !ISWORD(*(sp-1)))))
+#define	ISEOW(m, sp)					\
+    (((sp == m->endp && !(m->eflags&REG_NOTEOL)) ||	\
+    (sp < m->endp && *sp == '\n' &&			\
+    (m->g->cflags&REG_NEWLINE)) ||			\
+    (sp < m->endp && !ISWORD(*sp)) ) &&			\
+    (sp > m->beginp && ISWORD(*(sp-1))))		\
+
 /*
  - backref - figure out what matched what, figuring in back references
  == static const char *backref(struct match *m, const char *start, \
@@ -560,25 +639,27 @@
  */
 static const char *		/* == stop (success) or NULL (failure) */
 backref(
-    struct match *m,
-    const char *start,
-    const char *stop,
-    sopno startst,
-    sopno stopst,
-    sopno lev)			/* PLUS nesting level */
+	struct match *m,
+	const char *start,
+	const char *stop,
+	sopno startst,
+	sopno stopst,
+	sopno lev,		/* PLUS nesting level */
+	int rec)
 {
 	int i;
-	sopno ss;	/* start sop of current subRE */
-	const char *sp;	/* start of string matched by it */
-	sopno ssub;	/* start sop of subsubRE */
-	sopno esub;	/* end sop of subsubRE */
-	const char *ssp; /* start of string matched by subsubRE */
+	sopno ss;		/* start sop of current subRE */
+	const char *sp;		/* start of string matched by it */
+	sopno ssub;		/* start sop of subsubRE */
+	sopno esub;		/* end sop of subsubRE */
+	const char *ssp;	/* start of string matched by subsubRE */
 	const char *dp;
 	size_t len;
 	int hard;
 	sop s;
 	regoff_t offsave;
 	cset *cs;
+	wint_t wc;
 
 	_DIAGASSERT(m != NULL);
 	_DIAGASSERT(start != NULL);
@@ -592,23 +673,46 @@
 	for (ss = startst; !hard && ss < stopst; ss++)
 		switch (OP(s = m->g->strip[ss])) {
 		case OCHAR:
-			if (sp == stop || *sp++ != (char)OPND(s))
+			if (sp == stop)
+				return(NULL);
+			sp += XMBRTOWC(&wc, sp, (size_t)(stop - sp),
+			    &m->mbs, BADCHAR);
+			if (wc != (wint_t)OPND(s))
 				return(NULL);
 			break;
 		case OANY:
 			if (sp == stop)
 				return(NULL);
-			sp++;
+			sp += XMBRTOWC(&wc, sp, (size_t)(stop - sp),
+			    &m->mbs, BADCHAR);
+			if (wc == BADCHAR)
+				return (NULL);
 			break;
 		case OANYOF:
+			if (sp == stop)
+				return (NULL);
 			cs = &m->g->sets[OPND(s)];
-			if (sp == stop || !CHIN(cs, *sp++))
+			sp += XMBRTOWC(&wc, sp, (size_t)(stop - sp),
+			    &m->mbs, BADCHAR);
+			if (wc == BADCHAR || !CHIN(cs, wc))
+				return(NULL);
+			break;
+		case OBOS:
+			if (sp == m->beginp && (m->eflags & REG_NOTBOL) == 0)
+				{ /* yes */ }
+			else
+				return(NULL);
+			break;
+		case OEOS:
+			if (sp == m->endp && (m->eflags & REG_NOTEOL) == 0)
+				{ /* yes */ }
+			else
 				return(NULL);
 			break;
 		case OBOL:
-			if ( (sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||
-					(sp < m->endp && *(sp-1) == '\n' &&
-						(m->g->cflags&REG_NEWLINE)) )
+			if ((sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||
+			    (sp > m->offp && sp < m->endp &&
+			    *(sp-1) == '\n' && (m->g->cflags&REG_NEWLINE)))
 				{ /* yes */ }
 			else
 				return(NULL);
@@ -621,23 +725,29 @@
 			else
 				return(NULL);
 			break;
+		case OWBND:
+			if (ISBOW(m, sp) || ISEOW(m, sp))
+				{ /* yes */ }
+			else
+				return(NULL);
+			break;
+		case ONWBND:
+			if (((sp == m->beginp) && !ISWORD(*sp)) ||
+			    (sp == m->endp && !ISWORD(*(sp - 1))))
+				{ /* yes, beginning/end of subject */ }
+			else if (ISWORD(*(sp - 1)) == ISWORD(*sp))
+				{ /* yes, beginning/end of subject */ }
+			else
+				return(NULL);
+			break;
 		case OBOW:
-			if (( (sp == m->beginp && !(m->eflags&REG_NOTBOL)) ||
-					(sp < m->endp && *(sp-1) == '\n' &&
-						(m->g->cflags&REG_NEWLINE)) ||
-					(sp > m->beginp &&
-							!ISWORD(*(sp-1))) ) &&
-					(sp < m->endp && ISWORD(*sp)) )
+			if (ISBOW(m, sp))
 				{ /* yes */ }
 			else
 				return(NULL);
 			break;
 		case OEOW:
-			if (( (sp == m->endp && !(m->eflags&REG_NOTEOL)) ||
-					(sp < m->endp && *sp == '\n' &&
-						(m->g->cflags&REG_NEWLINE)) ||
-					(sp < m->endp && !ISWORD(*sp)) ) &&
-					(sp > m->beginp && ISWORD(*(sp-1))) )
+			if (ISEOW(m, sp))
 				{ /* yes */ }
 			else
 				return(NULL);
@@ -671,50 +781,47 @@
 	case OBACK_:		/* the vilest depths */
 		i = OPND(s);
 		assert(0 < i && i <= m->g->nsub);
-		if (m->pmatch[i].rm_eo == (regoff_t)-1)
+		if (m->pmatch[i].rm_eo == -1)
 			return(NULL);
-		assert(m->pmatch[i].rm_so != (regoff_t)-1);
-		len = (size_t)(m->pmatch[i].rm_eo - m->pmatch[i].rm_so);
-		if (len == 0)
+		assert(m->pmatch[i].rm_so != -1);
+		len = m->pmatch[i].rm_eo - m->pmatch[i].rm_so;
+		if (len == 0 && rec++ > MAX_RECURSION)
 			return(NULL);
 		assert(stop - m->beginp >= len);
 		if (sp > stop - len)
 			return(NULL);	/* not enough left to match */
-		ssp = m->offp + (size_t)m->pmatch[i].rm_so;
+		ssp = m->offp + m->pmatch[i].rm_so;
 		if (memcmp(sp, ssp, len) != 0)
 			return(NULL);
 		while (m->g->strip[ss] != SOP(O_BACK, i))
 			ss++;
-		return(backref(m, sp+len, stop, ss+1, stopst, lev));
-
+		return(backref(m, sp+len, stop, ss+1, stopst, lev, rec));
 	case OQUEST_:		/* to null or not */
-		dp = backref(m, sp, stop, ss+1, stopst, lev);
+		dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
 		if (dp != NULL)
 			return(dp);	/* not */
-		return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev));
-
+		return(backref(m, sp, stop, ss+OPND(s)+1, stopst, lev, rec));
 	case OPLUS_:
 		assert(m->lastpos != NULL);
 		assert(lev+1 <= m->g->nplus);
 		m->lastpos[lev+1] = sp;
-		return(backref(m, sp, stop, ss+1, stopst, lev+1));
-
+		return(backref(m, sp, stop, ss+1, stopst, lev+1, rec));
 	case O_PLUS:
 		if (sp == m->lastpos[lev])	/* last pass matched null */
-			return(backref(m, sp, stop, ss+1, stopst, lev-1));
+			return(backref(m, sp, stop, ss+1, stopst, lev-1, rec));
 		/* try another pass */
 		m->lastpos[lev] = sp;
-		dp = backref(m, sp, stop, ss-OPND(s)+1, stopst, lev);
+		dp = backref(m, sp, stop, ss-OPND(s)+1, stopst, lev, rec);
 		if (dp == NULL)
-			dp = backref(m, sp, stop, ss+1, stopst, lev-1);
-		return(dp);
-
+			return(backref(m, sp, stop, ss+1, stopst, lev-1, rec));
+		else
+			return(dp);
 	case OCH_:		/* find the right one, if any */
 		ssub = ss + 1;
 		esub = ss + OPND(s) - 1;
 		assert(OP(m->g->strip[esub]) == OOR1);
 		for (;;) {	/* find first matching branch */
-			dp = backref(m, sp, stop, ssub, esub, lev);
+			dp = backref(m, sp, stop, ssub, esub, lev, rec);
 			if (dp != NULL)
 				return(dp);
 			/* that one missed, try next one */
@@ -729,29 +836,28 @@
 			else
 				assert(OP(m->g->strip[esub]) == O_CH);
 		}
-
+		/* NOTREACHED */
+		break;
 	case OLPAREN:		/* must undo assignment if rest fails */
 		i = OPND(s);
 		assert(0 < i && i <= m->g->nsub);
 		offsave = m->pmatch[i].rm_so;
 		m->pmatch[i].rm_so = sp - m->offp;
-		dp = backref(m, sp, stop, ss+1, stopst, lev);
+		dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
 		if (dp != NULL)
 			return(dp);
 		m->pmatch[i].rm_so = offsave;
 		return(NULL);
-
 	case ORPAREN:		/* must undo assignment if rest fails */
 		i = OPND(s);
 		assert(0 < i && i <= m->g->nsub);
 		offsave = m->pmatch[i].rm_eo;
 		m->pmatch[i].rm_eo = sp - m->offp;
-		dp = backref(m, sp, stop, ss+1, stopst, lev);
+		dp = backref(m, sp, stop, ss+1, stopst, lev, rec);
 		if (dp != NULL)
 			return(dp);
 		m->pmatch[i].rm_eo = offsave;
 		return(NULL);
-
 	default:		/* uh oh */
 		assert(nope);
 		break;
@@ -760,141 +866,66 @@
 	/* "can't happen" */
 	assert(nope);
 	/* NOTREACHED */
-	return NULL;
+	return "shut up gcc";
 }
 
 /*
- - fast - step through the string at top speed
- == static const char *fast(struct match *m, const char *start, \
- ==	const char *stop, sopno startst, sopno stopst);
+ - walk - step through the string either quickly or slowly
+ == static const char *walk(struct match *m, const char *start, \
+ ==	const char *stop, sopno startst, sopno stopst, bool fast);
  */
-static const char *		/* where tentative match ended, or NULL */
-fast(
-    struct match *m,
-    const char *start,
-    const char *stop,
-    sopno startst,
-    sopno stopst)
+static const char * /* where it ended, or NULL */
+walk(struct match *m, const char *start, const char *stop, sopno startst,
+	sopno stopst, bool fast)
 {
 	states st = m->st;
 	states fresh = m->fresh;
-	states tmp = m->tmp;
-	const char *p = start;
-	int c = (start == m->beginp) ? OUT : *(start-1);
-	int lastc;	/* previous c */
-	int flagch;
-	size_t i;
-	const char *coldp; /* last p after which no match was underway */
-
-	_DIAGASSERT(m != NULL);
-	_DIAGASSERT(start != NULL);
-	_DIAGASSERT(stop != NULL);
-
-	CLEAR(st);
-	SET1(st, startst);
-	st = step(m->g, startst, stopst, st, NOTHING, st);
-	ASSIGN(fresh, st);
-	SP("start", st, *p);
-	coldp = NULL;
-	for (;;) {
-		/* next character */
-		lastc = c;
-		c = (p == m->endp) ? OUT : *p;
-		if (EQ(st, fresh))
-			coldp = p;
-
-		/* is there an EOL and/or BOL between lastc and c? */
-		flagch = '\0';
-		i = 0;
-		if ( (lastc == '\n' && m->g->cflags&REG_NEWLINE) ||
-				(lastc == OUT && !(m->eflags&REG_NOTBOL)) ) {
-			flagch = BOL;
-			i = m->g->nbol;
-		}
-		if ( (c == '\n' && m->g->cflags&REG_NEWLINE) ||
-				(c == OUT && !(m->eflags&REG_NOTEOL)) ) {
-			flagch = (flagch == BOL) ? BOLEOL : EOL;
-			i += m->g->neol;
-		}
-		if (i != 0) {
-			for (; i > 0; i--)
-				st = step(m->g, startst, stopst, st, flagch, st);
-			SP("boleol", st, c);
-		}
-
-		/* how about a word boundary? */
-		if ( (flagch == BOL || (lastc != OUT && !ISWORD(lastc))) &&
-					(c != OUT && ISWORD(c)) ) {
-			flagch = BOW;
-		}
-		if ( (lastc != OUT && ISWORD(lastc)) &&
-				(flagch == EOL || (c != OUT && !ISWORD(c))) ) {
-			flagch = EOW;
-		}
-		if (flagch == BOW || flagch == EOW) {
-			st = step(m->g, startst, stopst, st, flagch, st);
-			SP("boweow", st, c);
-		}
-
-		/* are we done? */
-		if (ISSET(st, stopst) || p == stop)
-			break;		/* NOTE BREAK OUT */
-
-		/* no, we must deal with this character */
-		ASSIGN(tmp, st);
-		ASSIGN(st, fresh);
-		assert(c != OUT);
-		st = step(m->g, startst, stopst, tmp, c, st);
-		SP("aft", st, c);
-		assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st));
-		p++;
-	}
-
-	assert(coldp != NULL);
-	m->coldp = coldp;
-	if (ISSET(st, stopst))
-		return(p+1);
-	else
-		return(NULL);
-}
-
-/*
- - slow - step through the string more deliberately
- == static const char *slow(struct match *m, const char *start, \
- ==	const char *stop, sopno startst, sopno stopst);
- */
-static const char *			/* where it ended */
-slow(
-    struct match *m,
-    const char *start,
-    const char *stop,
-    sopno startst,
-    sopno stopst)
-{
-	states st = m->st;
 	states empty = m->empty;
 	states tmp = m->tmp;
 	const char *p = start;
-	int c = (start == m->beginp) ? OUT : *(start-1);
-	int lastc;	/* previous c */
-	int flagch;
-	size_t i;
+	wint_t c;
+	wint_t lastc;		/* previous c */
+	wint_t flagch;
+	int sflags;
 	const char *matchp;	/* last p at which a match ended */
+	size_t i, clen;
 
 	_DIAGASSERT(m != NULL);
 	_DIAGASSERT(start != NULL);
 	_DIAGASSERT(stop != NULL);
 
-	AT("slow", start, stop, startst, stopst);
+	sflags = 0;
+	AT("walk", start, stop, startst, stopst);
 	CLEAR(st);
 	SET1(st, startst);
 	SP("sstart", st, *p);
-	st = step(m->g, startst, stopst, st, NOTHING, st);
+	st = step(m->g, startst, stopst, st, NOTHING, st, sflags);
+	if (fast)
+		ASSIGN(fresh, st);
 	matchp = NULL;
+	if (start == m->offp || (start == m->beginp && !(m->eflags&REG_NOTBOL)))
+		c = OUT;
+	else {
+		/*
+		 * XXX Wrong if the previous character was multi-byte.
+		 * Newline never is (in encodings supported by FreeBSD),
+		 * so this only breaks the ISWORD tests below.
+		 */
+		c = (uch)*(start - 1);
+	}
 	for (;;) {
 		/* next character */
 		lastc = c;
-		c = (p == m->endp) ? OUT : *p;
+		sflags = 0;
+		if (p == m->endp) {
+			c = OUT;
+			clen = 0;
+		} else
+			clen = XMBRTOWC(&c, p, (size_t)(m->endp - p),
+			    &m->mbs, BADCHAR);
+
+		if (fast && EQ(st, fresh))
+			matchp = p;
 
 		/* is there an EOL and/or BOL between lastc and c? */
 		flagch = '\0';
@@ -909,9 +940,20 @@
 			flagch = (flagch == BOL) ? BOLEOL : EOL;
 			i += m->g->neol;
 		}
+		if (lastc == OUT && (m->eflags & REG_NOTBOL) == 0) {
+			sflags |= SBOS;
+			/* Step one more for BOS. */
+			i++;
+		}
+		if (c == OUT && (m->eflags & REG_NOTEOL) == 0) {
+			sflags |= SEOS;
+			/* Step one more for EOS. */
+			i++;
+		}
 		if (i != 0) {
 			for (; i > 0; i--)
-				st = step(m->g, startst, stopst, st, flagch, st);
+				st = step(m->g, startst, stopst, st, flagch, st,
+				    sflags);
 			SP("sboleol", st, c);
 		}
 
@@ -925,52 +967,78 @@
 			flagch = EOW;
 		}
 		if (flagch == BOW || flagch == EOW) {
-			st = step(m->g, startst, stopst, st, flagch, st);
+			st = step(m->g, startst, stopst, st, flagch, st, sflags);
 			SP("sboweow", st, c);
 		}
+		if (lastc != OUT && c != OUT &&
+		    ISWORD(lastc) == ISWORD(c)) {
+			flagch = NWBND;
+		} else if ((lastc == OUT && !ISWORD(c)) ||
+		    (c == OUT && !ISWORD(lastc))) {
+			flagch = NWBND;
+		}
+		if (flagch == NWBND) {
+			st = step(m->g, startst, stopst, st, flagch, st, sflags);
+			SP("snwbnd", st, c);
+		}
 
 		/* are we done? */
-		if (ISSET(st, stopst))
-			matchp = p;
-		if (EQ(st, empty) || p == stop)
+		if (ISSET(st, stopst)) {
+			if (fast)
+				break;
+			else
+				matchp = p;
+		}
+		if (EQ(st, empty) || p == stop || clen > (size_t)(stop - p))
 			break;		/* NOTE BREAK OUT */
 
 		/* no, we must deal with this character */
 		ASSIGN(tmp, st);
-		ASSIGN(st, empty);
+		if (fast)
+			ASSIGN(st, fresh);
+		else
+			ASSIGN(st, empty);
 		assert(c != OUT);
-		st = step(m->g, startst, stopst, tmp, c, st);
+		st = step(m->g, startst, stopst, tmp, c, st, sflags);
 		SP("saft", st, c);
-		assert(EQ(step(m->g, startst, stopst, st, NOTHING, st), st));
-		p++;
+		assert(EQ(step(m->g, startst, stopst, st, NOTHING, st, sflags),
+		    st));
+		p += clen;
 	}
 
-	return(matchp);
+	if (fast) {
+		assert(matchp != NULL);
+		m->coldp = matchp;
+		if (ISSET(st, stopst))
+			return (p + XMBRTOWC(NULL, p, (size_t)(stop - p),
+			    &m->mbs, 0));
+		else
+			return (NULL);
+	} else
+		return (matchp);
 }
 
-
 /*
  - step - map set of states reachable before char to set reachable after
  == static states step(struct re_guts *g, sopno start, sopno stop, \
  ==	states bef, int ch, states aft);
- == #define	BOL	(OUT+1)
- == #define	EOL	(BOL+1)
- == #define	BOLEOL	(BOL+2)
- == #define	NOTHING	(BOL+3)
- == #define	BOW	(BOL+4)
- == #define	EOW	(BOL+5)
- == #define	CODEMAX	(BOL+5)		// highest code used
- == #define	NONCHAR(c)	((c) > CHAR_MAX)
- == #define	NNONCHAR	(CODEMAX-CHAR_MAX)
+ == #define	BOL	(OUT-1)
+ == #define	EOL	(BOL-1)
+ == #define	BOLEOL	(BOL-2)
+ == #define	NOTHING	(BOL-3)
+ == #define	BOW	(BOL-4)
+ == #define	EOW	(BOL-5)
+ == #define	BADCHAR	(BOL-6)
+ == #define	NONCHAR(c)	((c) <= OUT)
  */
 static states
-step(
-    struct re_guts *g,
-    sopno start,		/* start state within strip */
-    sopno stop,			/* state after stop state within strip */
-    states bef,			/* states reachable before */
-    int ch,			/* character or NONCHAR code */
-    states aft)			/* states already known reachable after */
+step(struct re_guts *g,
+	sopno start,		/* start state within strip */
+	sopno stop,		/* state after stop state within strip */
+	states bef,		/* states reachable before */
+	wint_t ch,		/* character or NONCHAR code */
+	states aft,		/* states already known reachable after */
+	int sflags)		/* state flags */
 {
 	cset *cs;
 	sop s;
@@ -989,8 +1057,16 @@
 			break;
 		case OCHAR:
 			/* only characters can match */
-			assert(!NONCHAR(ch) || ch != (char)OPND(s));
-			if (ch == (char)OPND(s))
+			assert(!NONCHAR(ch) || ch != OPND(s));
+			if (ch == (wint_t)OPND(s))
+				FWD(aft, bef, 1);
+			break;
+		case OBOS:
+			if ((ch == BOL || ch == BOLEOL) && (sflags & SBOS) != 0)
+				FWD(aft, bef, 1);
+			break;
+		case OEOS:
+			if ((ch == EOL || ch == BOLEOL) && (sflags & SEOS) != 0)
 				FWD(aft, bef, 1);
 			break;
 		case OBOL:
@@ -1009,6 +1085,14 @@
 			if (ch == EOW)
 				FWD(aft, bef, 1);
 			break;
+		case OWBND:
+			if (ch == BOW || ch == EOW)
+				FWD(aft, bef, 1);
+			break;
+		case ONWBND:
+			if (ch == NWBND)
+				FWD(aft, aft, 1);
+			break;
 		case OANY:
 			if (!NONCHAR(ch))
 				FWD(aft, bef, 1);
@@ -1054,10 +1138,10 @@
 		case OOR1:		/* done a branch, find the O_CH */
 			if (ISSTATEIN(aft, here)) {
 				for (look = 1;
-						OP(s = g->strip[pc+look]) != O_CH;
-						look += OPND(s))
+				    OP(s = g->strip[pc+look]) != O_CH;
+				    look += OPND(s))
 					assert(OP(s) == OOR2);
-				FWD(aft, aft, look);
+				FWD(aft, aft, look + 1);
 			}
 			break;
 		case OOR2:		/* propagate OCH_'s marking */
@@ -1083,20 +1167,19 @@
 /*
  - print - print a set of states
  == #ifdef REDEBUG
- == static void print(struct match *m, char *caption, states st, \
+ == static void print(struct match *m, const char *caption, states st, \
  ==	int ch, FILE *d);
  == #endif
  */
 static void
-print(
-    struct match *m,
-    char *caption,
-    states st,
-    int ch,
-    FILE *d)
+print(struct match *m,
+	const char *caption,
+	states st,
+	int ch,
+	FILE *d)
 {
 	struct re_guts *g = m->g;
-	int i;
+	sopno i;
 	int first = 1;
 
 	_DIAGASSERT(m != NULL);
@@ -1112,27 +1195,26 @@
 		fprintf(d, " %s", pchar(ch));
 	for (i = 0; i < g->nstates; i++)
 		if (ISSET(st, i)) {
-			fprintf(d, "%s%d", (first) ? "\t" : ", ", i);
+			fprintf(d, "%s%lu", (first) ? "\t" : ", ", i);
 			first = 0;
 		}
 	fprintf(d, "\n");
 }
 
-/* 
+/*
  - at - print current situation
  == #ifdef REDEBUG
- == static void at(struct match *m, char *title, char *start, char *stop, \
- ==						sopno startst, sopno stopst);
+ == static void at(struct match *m, const char *title, const char *start, \
+ ==			 const char *stop, sopno startst, sopno stopst);
  == #endif
  */
 static void
-at(
-    struct match *m,
-    char *title,
-    char *start,
-    char *stop,
-    sopno startst,
-    sopno stopst)
+at(	struct match *m,
+	const char *title,
+	const char *start,
+	const char *stop,
+	sopno startst,
+	sopno stopst)
 {
 
 	_DIAGASSERT(m != NULL);
@@ -1153,7 +1235,7 @@
 /*
  - pchar - make a character printable
  == #ifdef REDEBUG
- == static char *pchar(int ch);
+ == static const char *pchar(int ch);
  == #endif
  *
  * Is this identical to regchar() over in debug.c?  Well, yes.  But a
@@ -1161,28 +1243,26 @@
  * a matching debug.o, and this is convenient.  It all disappears in
  * the non-debug compilation anyway, so it doesn't matter much.
  */
-static char *			/* -> representation */
-pchar(
-    int ch)
+static const char *		/* -> representation */
+pchar(int ch)
 {
 	static char pbuf[10];
 
-	if (isprint(ch) || ch == ' ')
-		(void)snprintf(pbuf, sizeof pbuf, "%c", ch);
+	if (isprint((uch)ch) || ch == ' ')
+		snprintf(pbuf, sizeof(pbuf), "%c", ch);
 	else
-		(void)snprintf(pbuf, sizeof pbuf, "\\%o", ch);
+		snprintf(pbuf, sizeof(pbuf), "\\%o", ch);
 	return(pbuf);
 }
 #endif
 #endif
 
+#undef	stepback
 #undef	matcher
-#undef	fast
-#undef	slow
+#undef	walk
 #undef	dissect
 #undef	backref
 #undef	step
 #undef	print
 #undef	at
 #undef	match
-#undef	nope
diff --git a/libc/upstream-netbsd/lib/libc/regex/regcomp.c b/libc/upstream-netbsd/lib/libc/regex/regcomp.c
index 4a0d99a..957f8ac 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regcomp.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regcomp.c
@@ -1,9 +1,17 @@
-/*	$NetBSD: regcomp.c,v 1.38 2019/02/07 22:22:31 christos Exp $	*/
+/*	$NetBSD: regcomp.c,v 1.46 2021/03/11 15:00:29 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
+ * Copyright (c) 2011 The FreeBSD Foundation
+ * All rights reserved.
+ * Portions of this software were developed by David Chisnall
+ * under sponsorship from the FreeBSD Foundation.
+ *
  * This code is derived from software contributed to Berkeley by
  * Henry Spencer.
  *
@@ -34,74 +42,65 @@
  *	@(#)regcomp.c	8.5 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regcomp.c	8.5 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
 
 #include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)regcomp.c	8.5 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regcomp.c,v 1.38 2019/02/07 22:22:31 christos Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regcomp.c 368359 2020-12-05 03:18:48Z kevans $");
 #endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regcomp.c,v 1.46 2021/03/11 15:00:29 christos Exp $");
+
+#define _OPENBSD_SOURCE
+
+#ifndef LIBHACK
+#define REGEX_GNU_EXTENSIONS
 
 #include "namespace.h"
+#endif
 #include <sys/types.h>
-
-#include <assert.h>
+#include <stdio.h>
+#include <string.h>
 #include <ctype.h>
 #include <limits.h>
-#include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
 #include <regex.h>
+#include <stdbool.h>
 
-#ifdef __weak_alias
+#if defined(__weak_alias) && !defined(LIBHACK)
 __weak_alias(regcomp,_regcomp)
 #endif
 
+#ifdef REGEX_LIBC_COLLATE
+#include "collate.h"
+#endif
+
 #include "utils.h"
 #include "regex2.h"
 
-#include "cclass.h"
 #include "cname.h"
 
 /*
+ * Branching context, used to keep track of branch state for all of the branch-
+ * aware functions. In addition to keeping track of branch positions for the
+ * p_branch_* functions, we use this to simplify some clumsiness in BREs for
+ * detection of whether ^ is acting as an anchor or being used erroneously and
+ * also for whether we're in a sub-expression or not.
+ */
+struct branchc {
+	sopno start;
+	sopno back;
+	sopno fwd;
+
+	int nbranch;
+	int nchain;
+	bool outer;
+	bool terminate;
+};
+
+/*
  * parse structure, passed up and down to avoid global variables and
  * other clumsinesses
  */
@@ -109,6 +108,7 @@
 	const char *next;	/* next character in RE */
 	const char *end;	/* end of string (-> NUL normally) */
 	int error;		/* has an error been seen? */
+	int gnuext;
 	sop *strip;		/* malloced strip */
 	sopno ssize;		/* malloced strip size (allocated) */
 	sopno slen;		/* malloced strip length (used) */
@@ -117,56 +117,70 @@
 #	define	NPAREN	10	/* we need to remember () 1-9 for back refs */
 	sopno pbegin[NPAREN];	/* -> ( ([0] unused) */
 	sopno pend[NPAREN];	/* -> ) ([0] unused) */
+	bool allowbranch;	/* can this expression branch? */
+	bool bre;		/* convenience; is this a BRE? */
+	int pflags;		/* other parsing flags -- legacy escapes? */
+	bool (*parse_expr)(struct parse *, struct branchc *);
+	void (*pre_parse)(struct parse *, struct branchc *);
+	void (*post_parse)(struct parse *, struct branchc *);
 };
 
+#define PFLAG_LEGACY_ESC	0x00000001
+
 /* ========= begin header generated by ./mkh ========= */
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /* === regcomp.c === */
-static void p_ere(struct parse *p, int stop, size_t reclimit);
-static void p_ere_exp(struct parse *p, size_t reclimit);
+static bool p_ere_exp(struct parse *p, struct branchc *bc);
 static void p_str(struct parse *p);
-static void p_bre(struct parse *p, int end1, int end2, size_t reclimit);
-static int p_simp_re(struct parse *p, int starordinary, size_t reclimit);
+static int p_branch_eat_delim(struct parse *p, struct branchc *bc);
+static void p_branch_ins_offset(struct parse *p, struct branchc *bc);
+static void p_branch_fix_tail(struct parse *p, struct branchc *bc);
+static bool p_branch_empty(struct parse *p, struct branchc *bc);
+static bool p_branch_do(struct parse *p, struct branchc *bc);
+static void p_bre_pre_parse(struct parse *p, struct branchc *bc);
+static void p_bre_post_parse(struct parse *p, struct branchc *bc);
+static void p_re(struct parse *p, int end1, int end2);
+static bool p_simp_re(struct parse *p, struct branchc *bc);
 static int p_count(struct parse *p);
 static void p_bracket(struct parse *p);
+static int p_range_cmp(wchar_t c1, wchar_t c2);
 static void p_b_term(struct parse *p, cset *cs);
+#ifdef REGEX_GNU_EXTENSIONS
+static int p_b_pseudoclass(struct parse *p, char c);
+#endif
 static void p_b_cclass(struct parse *p, cset *cs);
+static void p_b_cclass_named(struct parse *p, cset *cs, const char[]);
 static void p_b_eclass(struct parse *p, cset *cs);
-static char p_b_symbol(struct parse *p);
-static char p_b_coll_elem(struct parse *p, int endc);
-static int othercase(int ch);
-static void bothcases(struct parse *p, int ch);
-static void ordinary(struct parse *p, int ch);
+static wint_t p_b_symbol(struct parse *p);
+static wint_t p_b_coll_elem(struct parse *p, wint_t endc);
+static bool may_escape(struct parse *p, const wint_t ch);
+static wint_t othercase(wint_t ch);
+static void bothcases(struct parse *p, wint_t ch);
+static void ordinary(struct parse *p, wint_t ch);
 static void nonnewline(struct parse *p);
-static void repeat(struct parse *p, sopno start, int from, int to, size_t reclimit);
+static void repeat(struct parse *p, sopno start, int from, int to);
 static int seterr(struct parse *p, int e);
 static cset *allocset(struct parse *p);
 static void freeset(struct parse *p, cset *cs);
-static sopno freezeset(struct parse *p, cset *cs);
-static int firstch(struct parse *p, cset *cs);
-static int nch(struct parse *p, cset *cs);
-static void mcadd(struct parse *p, cset *cs, const char *cp);
-#if 0
-static void mcsub(cset *cs, char *cp);
-static int mcin(cset *cs, char *cp);
-static char *mcfind(cset *cs, char *cp);
-#endif
-static void mcinvert(struct parse *p, cset *cs);
-static void mccase(struct parse *p, cset *cs);
-static int isinsets(struct re_guts *g, int c);
-static int samesets(struct re_guts *g, int c1, int c2);
-static void categorize(struct parse *p, struct re_guts *g);
+static void CHadd(struct parse *p, cset *cs, wint_t ch);
+static void CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max);
+static void CHaddtype(struct parse *p, cset *cs, wctype_t wct);
+static wint_t singleton(cset *cs);
 static sopno dupl(struct parse *p, sopno start, sopno finish);
-static void doemit(struct parse *p, sop op, sopno opnd);
-static void doinsert(struct parse *p, sop op, sopno opnd, sopno pos);
-static void dofwd(struct parse *p, sopno pos, sopno value);
+static void doemit(struct parse *p, sop op, size_t opnd);
+static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos);
+static void dofwd(struct parse *p, sopno pos, sop value);
 static int enlarge(struct parse *p, sopno size);
 static void stripsnug(struct parse *p, struct re_guts *g);
 static void findmust(struct parse *p, struct re_guts *g);
+static int altoffset(sop *scan, int offset);
+static void computejumps(struct parse *p, struct re_guts *g);
+static void computematchjumps(struct parse *p, struct re_guts *g);
 static sopno pluscount(struct parse *p, struct re_guts *g);
+static wint_t wgetnext(struct parse *p);
 
 #ifdef __cplusplus
 }
@@ -185,19 +199,22 @@
 #define	MORE2()	(p->next+1 < p->end)
 #define	SEE(c)	(MORE() && PEEK() == (c))
 #define	SEETWO(a, b)	(MORE() && MORE2() && PEEK() == (a) && PEEK2() == (b))
+#define	SEESPEC(a)	(p->bre ? SEETWO('\\', a) : SEE(a))
 #define	EAT(c)	((SEE(c)) ? (NEXT(), 1) : 0)
 #define	EATTWO(a, b)	((SEETWO(a, b)) ? (NEXT2(), 1) : 0)
+#define	EATSPEC(a)	(p->bre ? EATTWO('\\', a) : EAT(a))
 #define	NEXT()	(p->next++)
 #define	NEXT2()	(p->next += 2)
 #define	NEXTn(n)	(p->next += (n))
 #define	GETNEXT()	(*p->next++)
+#define	WGETNEXT()	wgetnext(p)
 #define	SETERROR(e)	seterr(p, (e))
-#define	REQUIRE(co, e)	(void) ((co) || SETERROR(e))
+#define	REQUIRE(co, e)	((co) || SETERROR(e))
 #define	MUSTSEE(c, e)	(REQUIRE(MORE() && PEEK() == (c), e))
-#define	MUSTEAT(c, e)	(void) (REQUIRE(MORE() && GETNEXT() == (c), e))
+#define	MUSTEAT(c, e)	(REQUIRE(MORE() && GETNEXT() == (c), e))
 #define	MUSTNOTSEE(c, e)	(REQUIRE(!MORE() || PEEK() != (c), e))
-#define	EMIT(op, sopnd)	doemit(p, (sop)(op), sopnd)
-#define	INSERT(op, pos)	doinsert(p, (sop)(op), HERE()-(pos)+1, pos)
+#define	EMIT(op, sopnd)	doemit(p, (op), (sopnd))
+#define	INSERT(op, pos)	doinsert(p, (op), HERE()-(pos)+1, pos)
 #define	AHEAD(pos)		dofwd(p, pos, HERE()-(pos))
 #define	ASTERN(sop, pos)	EMIT(sop, HERE()-pos)
 #define	HERE()		(p->slen)
@@ -205,42 +222,62 @@
 #define	THERETHERE()	(p->slen - 2)
 #define	DROP(n)	(p->slen -= (n))
 
-#ifndef NDEBUG
-static int never = 0;		/* for use in asserts; shuts lint up */
-#else
-#define	never	0		/* some <assert.h>s have bugs too */
+/* Macro used by computejump()/computematchjump() */
+#ifndef MIN
+#define MIN(a,b)	((a)<(b)?(a):(b))
 #endif
 
-#define	MEMLIMIT	0x8000000
-#define MEMSIZE(p) \
-	((p)->ncsalloc / CHAR_BIT * (p)->g->csetsize + \
-	(p)->ncsalloc * sizeof(cset) + \
-	(p)->ssize * sizeof(sop))
-#define	RECLIMIT	256
+#ifndef NLS
+static const struct {
+	const char *name;
+	int (*func)(int);
+} wctypes[] = {
+#define ADD(x) { .name = # x, .func = is ## x }
+	ADD(alnum),
+	ADD(alpha),
+	ADD(blank),
+	ADD(cntrl),
+	ADD(digit),
+	ADD(graph),
+	ADD(lower),
+	ADD(print),
+	ADD(punct),
+	ADD(space),
+	ADD(upper),
+	ADD(xdigit),
+#undef ADD
+};
 
-/*
- - regcomp - interface for parser and compilation
- = extern int regcomp(regex_t *, const char *, int);
- = #define	REG_BASIC	0000
- = #define	REG_EXTENDED	0001
- = #define	REG_ICASE	0002
- = #define	REG_NOSUB	0004
- = #define	REG_NEWLINE	0010
- = #define	REG_NOSPEC	0020
- = #define	REG_PEND	0040
- = #define	REG_DUMP	0200
- */
-int				/* 0 success, otherwise REG_something */
-regcomp(
-    regex_t *preg,
-    const char *pattern,
-    int cflags)
+wctype_t
+__regex_wctype(const char *str)
+{
+	for (size_t i = 0; i < __arraycount(wctypes); i++) {
+		if (strcmp(wctypes[i].name, str) == 0)
+			return (wctype_t)(i + 1);
+	}
+	return (wctype_t)0;
+}
+
+int
+__regex_iswctype(wint_t c, wctype_t ct)
+{
+	if (ct == 0)
+		return 0;
+	return (*wctypes[ct - 1].func)(c);
+}
+#endif
+
+static int				/* 0 success, otherwise REG_something */
+regcomp_internal(regex_t * __restrict preg,
+	const char * __restrict pattern,
+	int cflags, int pflags)
 {
 	struct parse pa;
 	struct re_guts *g;
 	struct parse *p = &pa;
 	int i;
 	size_t len;
+	size_t maxlen;
 #ifdef REDEBUG
 #	define	GOODFLAGS(f)	(f)
 #else
@@ -262,11 +299,27 @@
 		len = strlen(pattern);
 
 	/* do the mallocs early so failure handling is easy */
-	g = malloc(sizeof(struct re_guts) + (NC - 1) * sizeof(cat_t));
+	g = malloc(sizeof(*g));
 	if (g == NULL)
 		return(REG_ESPACE);
-	p->ssize = len/(size_t)2*(size_t)3 + (size_t)1;	/* ugh */
-	p->strip = calloc(p->ssize, sizeof(sop));
+	/*
+	 * Limit the pattern space to avoid a 32-bit overflow on buffer
+	 * extension.  Also avoid any signed overflow in case of conversion
+	 * so make the real limit based on a 31-bit overflow.
+	 *
+	 * Likely not applicable on 64-bit systems but handle the case
+	 * generically (who are we to stop people from using ~715MB+
+	 * patterns?).
+	 */
+	maxlen = ((size_t)-1 >> 1) / sizeof(*p->strip) * 2 / 3;
+	if (len >= maxlen) {
+		free(g);
+		return(REG_ESPACE);
+	}
+	p->ssize = (sopno)(len / 2 * 3 + 1);	/* ugh */
+	assert(p->ssize >= len);
+
+	p->strip = calloc(p->ssize, sizeof(*p->strip));
 	p->slen = 0;
 	if (p->strip == NULL) {
 		free(g);
@@ -275,46 +328,74 @@
 
 	/* set things up */
 	p->g = g;
-	p->next = pattern;
+	p->next = pattern;	/* convenience; we do not modify it */
 	p->end = p->next + len;
 	p->error = 0;
 	p->ncsalloc = 0;
+	p->pflags = pflags;
 	for (i = 0; i < NPAREN; i++) {
 		p->pbegin[i] = 0;
 		p->pend[i] = 0;
 	}
-	g->csetsize = NC;
+#ifdef REGEX_GNU_EXTENSIONS
+	if ((cflags & REG_GNU) == 0) {
+		p->gnuext = false;
+		p->allowbranch = (cflags & REG_EXTENDED) != 0;
+	} else
+		p->gnuext = p->allowbranch = true;
+#else
+	p->gnuext = false;
+	p->allowbranch = (cflags & REG_EXTENDED) != 0;
+#endif
+	if (cflags & REG_EXTENDED) {
+		p->bre = false;
+		p->parse_expr = p_ere_exp;
+		p->pre_parse = NULL;
+		p->post_parse = NULL;
+	} else {
+		p->bre = true;
+		p->parse_expr = p_simp_re;
+		p->pre_parse = p_bre_pre_parse;
+		p->post_parse = p_bre_post_parse;
+	}
 	g->sets = NULL;
-	g->setbits = NULL;
 	g->ncsets = 0;
 	g->cflags = cflags;
 	g->iflags = 0;
 	g->nbol = 0;
 	g->neol = 0;
 	g->must = NULL;
+	g->moffset = -1;
+	g->charjump = NULL;
+	g->matchjump = NULL;
 	g->mlen = 0;
 	g->nsub = 0;
-	g->ncategories = 1;	/* category 0 is "everything else" */
-	g->categories = &g->catspace[-(CHAR_MIN)];
-	(void) memset((char *)g->catspace, 0, NC*sizeof(cat_t));
 	g->backrefs = 0;
 
 	/* do it */
 	EMIT(OEND, 0);
 	g->firststate = THERE();
-	if (cflags&REG_EXTENDED)
-		p_ere(p, OUT, 0);
-	else if (cflags&REG_NOSPEC)
+	if (cflags & REG_NOSPEC)
 		p_str(p);
 	else
-		p_bre(p, OUT, OUT, 0);
+		p_re(p, OUT, OUT);
 	EMIT(OEND, 0);
 	g->laststate = THERE();
 
 	/* tidy up loose ends and fill things in */
-	categorize(p, g);
 	stripsnug(p, g);
 	findmust(p, g);
+	/* only use Boyer-Moore algorithm if the pattern is bigger
+	 * than three characters
+	 */
+	if(g->mlen > 3) {
+		computejumps(p, g);
+		computematchjumps(p, g);
+		if(g->matchjump == NULL && g->charjump != NULL) {
+			free(g->charjump);
+			g->charjump = NULL;
+		}
+	}
 	g->nplus = pluscount(p, g);
 	g->magic = MAGIC2;
 	preg->re_nsub = g->nsub;
@@ -333,97 +414,72 @@
 }
 
 /*
- - p_ere - ERE parser top level, concatenation and alternation
- == static void p_ere(struct parse *p, int stop, size_t reclimit);
+ - regcomp - interface for parser and compilation
+ = extern int regcomp(regex_t *, const char *, int);
+ = #define	REG_BASIC	0000
+ = #define	REG_EXTENDED	0001
+ = #define	REG_ICASE	0002
+ = #define	REG_NOSUB	0004
+ = #define	REG_NEWLINE	0010
+ = #define	REG_NOSPEC	0020
+ = #define	REG_PEND	0040
+ = #define	REG_DUMP	0200
  */
-static void
-p_ere(
-    struct parse *p,
-    int stop,			/* character this ERE should end at */
-    size_t reclimit)
+int				/* 0 success, otherwise REG_something */
+regcomp(regex_t * __restrict preg,
+	const char * __restrict pattern,
+	int cflags)
 {
-	char c;
-	sopno prevback = 0;	/* pacify gcc */
-	sopno prevfwd = 0; 	/* pacify gcc */
-	sopno conc;
-	int first = 1;		/* is this the first alternative? */
 
-	_DIAGASSERT(p != NULL);
-
-	if (reclimit++ > RECLIMIT || p->error == REG_ESPACE) {
-		p->error = REG_ESPACE;
-		return;
-	}
-
-	for (;;) {
-		/* do a bunch of concatenated expressions */
-		conc = HERE();
-		while (MORE() && (c = PEEK()) != '|' && c != stop)
-			p_ere_exp(p, reclimit);
-		REQUIRE(HERE() != conc, REG_EMPTY);	/* require nonempty */
-
-		if (!EAT('|'))
-			break;		/* NOTE BREAK OUT */
-
-		if (first) {
-			INSERT(OCH_, conc);	/* offset is wrong */
-			prevfwd = conc;
-			prevback = conc;
-			first = 0;
-		}
-		ASTERN(OOR1, prevback);
-		prevback = THERE();
-		AHEAD(prevfwd);			/* fix previous offset */
-		prevfwd = HERE();
-		EMIT(OOR2, 0);			/* offset is very wrong */
-	}
-
-	if (!first) {		/* tail-end fixups */
-		AHEAD(prevfwd);
-		ASTERN(O_CH, prevback);
-	}
-
-	assert(!MORE() || SEE(stop));
+	return (regcomp_internal(preg, pattern, cflags, 0));
 }
 
 /*
- - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op
- == static void p_ere_exp(struct parse *p, size_t reclimit);
+ - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op,
+ - return whether we should terminate or not
+ == static bool p_ere_exp(struct parse *p);
  */
-static void
-p_ere_exp(
-    struct parse *p,
-    size_t reclimit)
+static bool
+p_ere_exp(struct parse *p, struct branchc *bc)
 {
 	char c;
+	wint_t wc;
 	sopno pos;
 	int count;
 	int count2;
+#ifdef REGEX_GNU_EXTENSIONS
+	size_t i;
+	int handled;
+#endif
 	sopno subno;
 	int wascaret = 0;
 
 	_DIAGASSERT(p != NULL);
 
+	(void)bc;
 	assert(MORE());		/* caller should have ensured this */
 	c = GETNEXT();
 
+#ifdef REGEX_GNU_EXTENSIONS
+	handled = 0;
+#endif
 	pos = HERE();
 	switch (c) {
 	case '(':
-		REQUIRE(MORE(), REG_EPAREN);
+		(void)REQUIRE(MORE(), REG_EPAREN);
 		p->g->nsub++;
-		subno = p->g->nsub;
+		subno = (sopno)p->g->nsub;
 		if (subno < NPAREN)
 			p->pbegin[subno] = HERE();
 		EMIT(OLPAREN, subno);
 		if (!SEE(')'))
-			p_ere(p, ')', reclimit);
+			p_re(p, ')', IGN);
 		if (subno < NPAREN) {
 			p->pend[subno] = HERE();
 			assert(p->pend[subno] != 0);
 		}
 		EMIT(ORPAREN, subno);
-		MUSTEAT(')', REG_EPAREN);
+		(void)MUSTEAT(')', REG_EPAREN);
 		break;
 #ifndef POSIX_MISTAKE
 	case ')':		/* happens only if no current unmatched ( */
@@ -454,6 +510,7 @@
 	case '*':
 	case '+':
 	case '?':
+	case '{':
 		SETERROR(REG_BADRPT);
 		break;
 	case '.':
@@ -466,30 +523,118 @@
 		p_bracket(p);
 		break;
 	case '\\':
-		REQUIRE(MORE(), REG_EESCAPE);
-		c = GETNEXT();
-		ordinary(p, c);
+		(void)REQUIRE(MORE(), REG_EESCAPE);
+		wc = WGETNEXT();
+#ifdef REGEX_GNU_EXTENSIONS
+		if (p->gnuext) {
+			handled = 1;
+			switch (wc) {
+			case '`':
+				EMIT(OBOS, 0);
+				break;
+			case '\'':
+				EMIT(OEOS, 0);
+				break;
+			case 'B':
+				EMIT(ONWBND, 0);
+				break;
+			case 'b':
+				EMIT(OWBND, 0);
+				break;
+			case 'W':
+			case 'w':
+			case 'S':
+			case 's':
+				p_b_pseudoclass(p, wc);
+				break;
+			case 'a':
+				ordinary(p, '\a');
+				break;
+			case 'e':
+				ordinary(p, '\e');
+				break;
+			case 'f':
+				ordinary(p, '\f');
+				break;
+			case 'n':
+				ordinary(p, '\n');
+				break;
+			case 'r':
+				ordinary(p, '\r');
+				break;
+			case 't':
+				ordinary(p, '\t');
+				break;
+			case 'v':
+				ordinary(p, '\v');
+				break;
+			case '1':
+			case '2':
+			case '3':
+			case '4':
+			case '5':
+			case '6':
+			case '7':
+			case '8':
+			case '9':
+				i = wc - '0';
+				assert(i < NPAREN);
+				if (p->pend[i] != 0) {
+					assert(i <= p->g->nsub);
+					EMIT(OBACK_, i);
+					assert(p->pbegin[i] != 0);
+					assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);
+					assert(OP(p->strip[p->pend[i]]) == ORPAREN);
+					(void) dupl(p, p->pbegin[i]+1, p->pend[i]);
+					EMIT(O_BACK, i);
+				} else
+					SETERROR(REG_ESUBREG);
+				p->g->backrefs = 1;
+				break;
+			default:
+				handled = 0;
+			}
+			/* Don't proceed to the POSIX bits if we've already handled it */
+			if (handled)
+				break;
+		}
+#endif
+		switch (wc) {
+		case '<':
+			EMIT(OBOW, 0);
+			break;
+		case '>':
+			EMIT(OEOW, 0);
+			break;
+		default:
+			if (may_escape(p, wc))
+				ordinary(p, wc);
+			else
+				SETERROR(REG_EESCAPE);
+			break;
+		}
 		break;
-	case '{':		/* okay as ordinary except if digit follows */
-		REQUIRE(!MORE() || !isdigit((unsigned char)PEEK()), REG_BADRPT);
-		/* FALLTHROUGH */
 	default:
 		if (p->error != 0)
-			return;
-		ordinary(p, c);
+			return (false);
+		p->next--;
+		wc = WGETNEXT();
+		ordinary(p, wc);
 		break;
 	}
 
 	if (!MORE())
-		return;
+		return (false);
 	c = PEEK();
 	/* we call { a repetition if followed by a digit */
-	if (!( c == '*' || c == '+' || c == '?' ||
-	    (c == '{' && MORE2() && isdigit((unsigned char)PEEK2())) ))
-		return;		/* no repetition, we're done */
+	if (!( c == '*' || c == '+' || c == '?' || c == '{'))
+		return (false);		/* no repetition, we're done */
+	else if (c == '{')
+		(void)REQUIRE(MORE2() && \
+		    (isdigit((uch)PEEK2()) || PEEK2() == ','), REG_BADRPT);
 	NEXT();
 
-	REQUIRE(!wascaret, REG_BADRPT);
+	(void)REQUIRE(!wascaret, REG_BADRPT);
 	switch (c) {
 	case '*':	/* implemented as +? */
 		/* this case does not require the (y|) trick, noKLUDGE */
@@ -514,30 +659,31 @@
 	case '{':
 		count = p_count(p);
 		if (EAT(',')) {
-			if (isdigit((unsigned char)PEEK())) {
+			if (isdigit((uch)PEEK())) {
 				count2 = p_count(p);
-				REQUIRE(count <= count2, REG_BADBR);
+				(void)REQUIRE(count <= count2, REG_BADBR);
 			} else		/* single number with comma */
 				count2 = INFINITY;
 		} else		/* just a single number */
 			count2 = count;
-		repeat(p, pos, count, count2, 0);
+		repeat(p, pos, count, count2);
 		if (!EAT('}')) {	/* error heuristics */
 			while (MORE() && PEEK() != '}')
 				NEXT();
-			REQUIRE(MORE(), REG_EBRACE);
+			(void)REQUIRE(MORE(), REG_EBRACE);
 			SETERROR(REG_BADBR);
 		}
 		break;
 	}
 
 	if (!MORE())
-		return;
+		return (false);
 	c = PEEK();
 	if (!( c == '*' || c == '+' || c == '?' ||
-	    (c == '{' && MORE2() && isdigit((unsigned char)PEEK2())) ) )
-		return;
+				(c == '{' && MORE2() && isdigit((uch)PEEK2())) ) )
+		return (false);
 	SETERROR(REG_BADRPT);
+	return (false);
 }
 
 /*
@@ -545,159 +691,350 @@
  == static void p_str(struct parse *p);
  */
 static void
-p_str(
-    struct parse *p)
+p_str(struct parse *p)
 {
-
-	_DIAGASSERT(p != NULL);
-
-	REQUIRE(MORE(), REG_EMPTY);
+	(void)REQUIRE(MORE(), REG_EMPTY);
 	while (MORE())
-		ordinary(p, GETNEXT());
+		ordinary(p, WGETNEXT());
 }
 
 /*
- - p_bre - BRE parser top level, anchoring and concatenation
- == static void p_bre(struct parse *p, int end1, \
- ==	int end2, size_t reclimit);
- * Giving end1 as OUT essentially eliminates the end1/end2 check.
- *
- * This implementation is a bit of a kludge, in that a trailing $ is first
- * taken as an ordinary character and then revised to be an anchor.  The
- * only undesirable side effect is that '$' gets included as a character
- * category in such cases.  This is fairly harmless; not worth fixing.
- * The amount of lookahead needed to avoid this kludge is excessive.
+ * Eat consecutive branch delimiters for the kind of expression that we are
+ * parsing, return the number of delimiters that we ate.
+ */
+static int
+p_branch_eat_delim(struct parse *p, struct branchc *bc)
+{
+	int nskip;
+
+	(void)bc;
+	nskip = 0;
+	while (EATSPEC('|'))
+		++nskip;
+	return (nskip);
+}
+
+/*
+ * Insert necessary branch book-keeping operations. This emits a
+ * bogus 'next' offset, since we still have more to parse
  */
 static void
-p_bre(
-    struct parse *p,
-    int end1,		/* first terminating character */
-    int end2,		/* second terminating character */
-    size_t reclimit)
+p_branch_ins_offset(struct parse *p, struct branchc *bc)
 {
-	sopno start;
-	int first = 1;			/* first subexpression? */
-	int wasdollar = 0;
 
-	_DIAGASSERT(p != NULL);
-
-	if (reclimit++ > RECLIMIT || p->error == REG_ESPACE) {
-		p->error = REG_ESPACE;
-		return;
+	if (bc->nbranch == 0) {
+		INSERT(OCH_, bc->start);	/* offset is wrong */
+		bc->fwd = bc->start;
+		bc->back = bc->start;
 	}
 
-	start = HERE();
+	ASTERN(OOR1, bc->back);
+	bc->back = THERE();
+	AHEAD(bc->fwd);			/* fix previous offset */
+	bc->fwd = HERE();
+	EMIT(OOR2, 0);			/* offset is very wrong */
+	++bc->nbranch;
+}
 
+/*
+ * Fix the offset of the tail branch, if we actually had any branches.
+ * This is to correct the bogus placeholder offset that we use.
+ */
+static void
+p_branch_fix_tail(struct parse *p, struct branchc *bc)
+{
+
+	/* Fix bogus offset at the tail if we actually have branches */
+	if (bc->nbranch > 0) {
+		AHEAD(bc->fwd);
+		ASTERN(O_CH, bc->back);
+	}
+}
+
+/*
+ * Signal to the parser that an empty branch has been encountered; this will,
+ * in the future, be used to allow for more permissive behavior with empty
+ * branches. The return value should indicate whether parsing may continue
+ * or not.
+ */
+static bool
+p_branch_empty(struct parse *p, struct branchc *bc)
+{
+
+	(void)bc;
+	SETERROR(REG_EMPTY);
+	return (false);
+}
+
+/*
+ * Take care of any branching requirements. This includes inserting the
+ * appropriate branching instructions as well as eating all of the branch
+ * delimiters until we either run out of pattern or need to parse more pattern.
+ */
+static bool
+p_branch_do(struct parse *p, struct branchc *bc)
+{
+	int ate = 0;
+
+	ate = p_branch_eat_delim(p, bc);
+	if (ate == 0)
+		return (false);
+	else if ((ate > 1 || (bc->outer && !MORE())) && !p_branch_empty(p, bc))
+		/*
+		 * Halt parsing only if we have an empty branch and p_branch_empty
+		 * indicates that we must not continue. In the future, this will not
+		 * necessarily be an error.
+		 */
+		return (false);
+	p_branch_ins_offset(p, bc);
+
+	return (true);
+}
+
+static void
+p_bre_pre_parse(struct parse *p, struct branchc *bc)
+{
+
+	(void)bc;
+	/*
+	 * Does not move cleanly into expression parser because of
+	 * ordinary interpration of * at the beginning position of
+	 * an expression.
+	 */
 	if (EAT('^')) {
 		EMIT(OBOL, 0);
 		p->g->iflags |= USEBOL;
 		p->g->nbol++;
 	}
-	while (MORE() && !SEETWO(end1, end2)) {
-		wasdollar = p_simp_re(p, first, reclimit);
-		first = 0;
-	}
-	if (wasdollar) {	/* oops, that was a trailing anchor */
+}
+
+static void
+p_bre_post_parse(struct parse *p, struct branchc *bc)
+{
+
+	/* Expression is terminating due to EOL token */
+	if (bc->terminate) {
 		DROP(1);
 		EMIT(OEOL, 0);
 		p->g->iflags |= USEEOL;
 		p->g->neol++;
 	}
+}
 
-	REQUIRE(HERE() != start, REG_EMPTY);	/* require nonempty */
+/*
+ - p_re - Top level parser, concatenation and BRE anchoring
+ == static void p_re(struct parse *p, int end1, int end2);
+ * Giving end1 as OUT essentially eliminates the end1/end2 check.
+ *
+ * This implementation is a bit of a kludge, in that a trailing $ is first
+ * taken as an ordinary character and then revised to be an anchor.
+ * The amount of lookahead needed to avoid this kludge is excessive.
+ */
+static void
+p_re(struct parse *p,
+	int end1,	/* first terminating character */
+	int end2)	/* second terminating character; ignored for EREs */
+{
+	struct branchc bc;
+
+	bc.nbranch = 0;
+	if (end1 == OUT && end2 == OUT)
+		bc.outer = true;
+	else
+		bc.outer = false;
+#define	SEEEND()	(!p->bre ? SEE(end1) : SEETWO(end1, end2))
+	for (;;) {
+		bc.start = HERE();
+		bc.nchain = 0;
+		bc.terminate = false;
+		if (p->pre_parse != NULL)
+			p->pre_parse(p, &bc);
+		while (MORE() && (!p->allowbranch || !SEESPEC('|')) && !SEEEND()) {
+			bc.terminate = p->parse_expr(p, &bc);
+			++bc.nchain;
+		}
+		if (p->post_parse != NULL)
+			p->post_parse(p, &bc);
+		(void) REQUIRE(p->gnuext || HERE() != bc.start, REG_EMPTY);
+#ifdef REGEX_GNU_EXTENSIONS
+		if (p->gnuext && HERE() == bc.start && !p_branch_empty(p, &bc))
+			break;
+#endif
+		if (!p->allowbranch)
+			break;
+		/*
+		 * p_branch_do's return value indicates whether we should
+		 * continue parsing or not. This is both for correctness and
+		 * a slight optimization, because it will check if we've
+		 * encountered an empty branch or the end of the string
+		 * immediately following a branch delimiter.
+		 */
+		if (!p_branch_do(p, &bc))
+			break;
+	}
+#undef SEE_END
+	if (p->allowbranch)
+		p_branch_fix_tail(p, &bc);
+	assert(!MORE() || SEE(end1));
 }
 
 /*
  - p_simp_re - parse a simple RE, an atom possibly followed by a repetition
- == static int p_simp_re(struct parse *p, int starordinary, size_t reclimit);
+ == static bool p_simp_re(struct parse *p, struct branchc *bc);
  */
-static int			/* was the simple RE an unbackslashed $? */
-p_simp_re(
-    struct parse *p,
-    int starordinary,		/* is a leading * an ordinary character? */
-    size_t reclimit)
+static bool			/* was the simple RE an unbackslashed $? */
+p_simp_re(struct parse *p, struct branchc *bc)
 {
 	int c;
+	int cc;			/* convenient/control character */
 	int count;
 	int count2;
-	sopno pos, i;
+	sopno pos;
+	bool handled;
+	size_t i;
+	wint_t wc;
 	sopno subno;
 #	define	BACKSL	(1<<CHAR_BIT)
 
-	_DIAGASSERT(p != NULL);
-
-	pos = HERE();		/* repetion op, if any, covers from here */
+	pos = HERE();		/* repetition op, if any, covers from here */
+	handled = false;
 
 	assert(MORE());		/* caller should have ensured this */
 	c = GETNEXT();
 	if (c == '\\') {
-		REQUIRE(MORE(), REG_EESCAPE);
-		c = BACKSL | (unsigned char)GETNEXT();
-	}
-	switch (c) {
-	case '.':
-		if (p->g->cflags&REG_NEWLINE)
-			nonnewline(p);
-		else
-			EMIT(OANY, 0);
-		break;
-	case '[':
-		p_bracket(p);
-		break;
-	case BACKSL|'{':
-		SETERROR(REG_BADRPT);
-		break;
-	case BACKSL|'(':
-		p->g->nsub++;
-		subno = p->g->nsub;
-		if (subno < NPAREN)
-			p->pbegin[subno] = HERE();
-		EMIT(OLPAREN, subno);
-		/* the MORE here is an error heuristic */
-		if (MORE() && !SEETWO('\\', ')'))
-			p_bre(p, '\\', ')', reclimit);
-		if (subno < NPAREN) {
-			p->pend[subno] = HERE();
-			assert(p->pend[subno] != 0);
+		(void)REQUIRE(MORE(), REG_EESCAPE);
+		cc = GETNEXT();
+		c = BACKSL | cc;
+#ifdef REGEX_GNU_EXTENSIONS
+		if (p->gnuext) {
+			handled = true;
+			switch (c) {
+			case BACKSL|'`':
+				EMIT(OBOS, 0);
+				break;
+			case BACKSL|'\'':
+				EMIT(OEOS, 0);
+				break;
+			case BACKSL|'B':
+				EMIT(ONWBND, 0);
+				break;
+			case BACKSL|'b':
+				EMIT(OWBND, 0);
+				break;
+			case BACKSL|'W':
+			case BACKSL|'w':
+			case BACKSL|'S':
+			case BACKSL|'s':
+				p_b_pseudoclass(p, cc);
+				break;
+			case BACKSL|'a':
+				ordinary(p, '\a');
+				break;
+			case BACKSL|'e':
+				ordinary(p, '\e');
+				break;
+			case BACKSL|'f':
+				ordinary(p, '\f');
+				break;
+			case BACKSL|'n':
+				ordinary(p, '\n');
+				break;
+			case BACKSL|'r':
+				ordinary(p, '\r');
+				break;
+			case BACKSL|'t':
+				ordinary(p, '\t');
+				break;
+			case BACKSL|'v':
+				ordinary(p, '\v');
+				break;
+			default:
+				handled = false;
+			}
 		}
-		EMIT(ORPAREN, subno);
-		REQUIRE(EATTWO('\\', ')'), REG_EPAREN);
-		break;
-	case BACKSL|')':	/* should not get here -- must be user */
-	case BACKSL|'}':
-		SETERROR(REG_EPAREN);
-		break;
-	case BACKSL|'1':
-	case BACKSL|'2':
-	case BACKSL|'3':
-	case BACKSL|'4':
-	case BACKSL|'5':
-	case BACKSL|'6':
-	case BACKSL|'7':
-	case BACKSL|'8':
-	case BACKSL|'9':
-		i = (c&~BACKSL) - '0';
-		assert(i < NPAREN);
-		if (p->pend[i] != 0) {
-			assert(i <= p->g->nsub);
-			EMIT(OBACK_, i);
-			assert(p->pbegin[i] != 0);
-			assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);
-			assert(OP(p->strip[p->pend[i]]) == ORPAREN);
-			(void) dupl(p, p->pbegin[i]+1, p->pend[i]);
-			EMIT(O_BACK, i);
-		} else
-			SETERROR(REG_ESUBREG);
-		p->g->backrefs = 1;
-		break;
-	case '*':
-		REQUIRE(starordinary, REG_BADRPT);
-		/* FALLTHROUGH */
-	default:
-		if (p->error != 0)
-			return(0);
-		ordinary(p, c &~ BACKSL);
-		break;
+#endif
+	}
+	if (!handled) {
+		switch (c) {
+		case '.':
+			if (p->g->cflags&REG_NEWLINE)
+				nonnewline(p);
+			else
+				EMIT(OANY, 0);
+			break;
+		case '[':
+			p_bracket(p);
+			break;
+		case BACKSL|'<':
+			EMIT(OBOW, 0);
+			break;
+		case BACKSL|'>':
+			EMIT(OEOW, 0);
+			break;
+		case BACKSL|'{':
+			SETERROR(REG_BADRPT);
+			break;
+		case BACKSL|'(':
+			p->g->nsub++;
+			subno = (sopno)p->g->nsub;
+			if (subno < NPAREN)
+				p->pbegin[subno] = HERE();
+			EMIT(OLPAREN, subno);
+			/* the MORE here is an error heuristic */
+			if (MORE() && !SEETWO('\\', ')'))
+				p_re(p, '\\', ')');
+			if (subno < NPAREN) {
+				p->pend[subno] = HERE();
+				assert(p->pend[subno] != 0);
+			}
+			EMIT(ORPAREN, subno);
+			(void)REQUIRE(EATTWO('\\', ')'), REG_EPAREN);
+			break;
+		case BACKSL|')':	/* should not get here -- must be user */
+			SETERROR(REG_EPAREN);
+			break;
+		case BACKSL|'1':
+		case BACKSL|'2':
+		case BACKSL|'3':
+		case BACKSL|'4':
+		case BACKSL|'5':
+		case BACKSL|'6':
+		case BACKSL|'7':
+		case BACKSL|'8':
+		case BACKSL|'9':
+			i = (c&~BACKSL) - '0';
+			assert(i < NPAREN);
+			if (p->pend[i] != 0) {
+				assert(i <= p->g->nsub);
+				EMIT(OBACK_, i);
+				assert(p->pbegin[i] != 0);
+				assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);
+				assert(OP(p->strip[p->pend[i]]) == ORPAREN);
+				(void) dupl(p, p->pbegin[i]+1, p->pend[i]);
+				EMIT(O_BACK, i);
+			} else
+				SETERROR(REG_ESUBREG);
+			p->g->backrefs = 1;
+			break;
+		case '*':
+			/*
+			 * Ordinary if used as the first character beyond BOL anchor of
+			 * a (sub-)expression, counts as a bad repetition operator if it
+			 * appears otherwise.
+			 */
+			(void)REQUIRE(bc->nchain == 0, REG_BADRPT);
+			/* FALLTHROUGH */
+		default:
+			if (p->error != 0)
+				return (false);	/* Definitely not $... */
+			p->next--;
+			wc = WGETNEXT();
+			if ((c & BACKSL) == 0 || may_escape(p, wc))
+				ordinary(p, wc);
+			else
+				SETERROR(REG_EESCAPE);
+			break;
+		}
 	}
 
 	if (EAT('*')) {		/* implemented as +? */
@@ -706,27 +1043,35 @@
 		ASTERN(O_PLUS, pos);
 		INSERT(OQUEST_, pos);
 		ASTERN(O_QUEST, pos);
+#ifdef REGEX_GNU_EXTENSIONS
+	} else if (p->gnuext && EATTWO('\\', '?')) {
+		INSERT(OQUEST_, pos);
+		ASTERN(O_QUEST, pos);
+	} else if (p->gnuext && EATTWO('\\', '+')) {
+		INSERT(OPLUS_, pos);
+		ASTERN(O_PLUS, pos);
+#endif
 	} else if (EATTWO('\\', '{')) {
 		count = p_count(p);
 		if (EAT(',')) {
-			if (MORE() && isdigit((unsigned char)PEEK())) {
+			if (MORE() && isdigit((uch)PEEK())) {
 				count2 = p_count(p);
-				REQUIRE(count <= count2, REG_BADBR);
+				(void)REQUIRE(count <= count2, REG_BADBR);
 			} else		/* single number with comma */
 				count2 = INFINITY;
 		} else		/* just a single number */
 			count2 = count;
-		repeat(p, pos, count, count2, 0);
+		repeat(p, pos, count, count2);
 		if (!EATTWO('\\', '}')) {	/* error heuristics */
 			while (MORE() && !SEETWO('\\', '}'))
 				NEXT();
-			REQUIRE(MORE(), REG_EBRACE);
+			(void)REQUIRE(MORE(), REG_EBRACE);
 			SETERROR(REG_BADBR);
 		}
-	} else if (c == (unsigned char)'$')	/* $ (but not \$) ends it */
-		return(1);
+	} else if (c == '$')     /* $ (but not \$) ends it */
+		return (true);
 
-	return(0);
+	return (false);
 }
 
 /*
@@ -734,105 +1079,95 @@
  == static int p_count(struct parse *p);
  */
 static int			/* the value */
-p_count(
-    struct parse *p)
+p_count(struct parse *p)
 {
 	int count = 0;
 	int ndigits = 0;
 
-	_DIAGASSERT(p != NULL);
-
-	while (MORE() && isdigit((unsigned char)PEEK()) && count <= DUPMAX) {
+	while (MORE() && isdigit((uch)PEEK()) && count <= DUPMAX) {
 		count = count*10 + (GETNEXT() - '0');
 		ndigits++;
 	}
 
-	REQUIRE(ndigits > 0 && count <= DUPMAX, REG_BADBR);
+	(void)REQUIRE(ndigits > 0 && count <= DUPMAX, REG_BADBR);
 	return(count);
 }
 
 /*
  - p_bracket - parse a bracketed character list
  == static void p_bracket(struct parse *p);
- *
- * Note a significant property of this code:  if the allocset() did SETERROR,
- * no set operations are done.
  */
 static void
-p_bracket(
-    struct parse *p)
+p_bracket(struct parse *p)
 {
 	cset *cs;
-	int invert = 0;
-	_DIAGASSERT(p != NULL);
-
-	cs = allocset(p);
-	if (cs == NULL)
-		return;
+	wint_t ch;
 
 	/* Dept of Truly Sickening Special-Case Kludges */
-	if (p->next + 5 < p->end && strncmp(p->next, "[:<:]]",
-					    (size_t)6) == 0) {
+	if (p->next + 5 < p->end && strncmp(p->next, "[:<:]]", 6) == 0) {
 		EMIT(OBOW, 0);
 		NEXTn(6);
 		return;
 	}
-	if (p->next + 5 < p->end && strncmp(p->next, "[:>:]]",
-					    (size_t)6) == 0) {
+	if (p->next + 5 < p->end && strncmp(p->next, "[:>:]]", 6) == 0) {
 		EMIT(OEOW, 0);
 		NEXTn(6);
 		return;
 	}
 
+	if ((cs = allocset(p)) == NULL)
+		return;
+
+	if (p->g->cflags&REG_ICASE)
+		cs->icase = 1;
 	if (EAT('^'))
-		invert++;	/* make note to invert set at end */
+		cs->invert = 1;
 	if (EAT(']'))
-		CHadd(cs, ']');
+		CHadd(p, cs, ']');
 	else if (EAT('-'))
-		CHadd(cs, '-');
+		CHadd(p, cs, '-');
 	while (MORE() && PEEK() != ']' && !SEETWO('-', ']'))
 		p_b_term(p, cs);
 	if (EAT('-'))
-		CHadd(cs, '-');
-	MUSTEAT(']', REG_EBRACK);
+		CHadd(p, cs, '-');
+	(void)MUSTEAT(']', REG_EBRACK);
 
 	if (p->error != 0)	/* don't mess things up further */
 		return;
 
-	if (p->g->cflags&REG_ICASE) {
-		ssize_t i;
-		int ci;
+	if (cs->invert && p->g->cflags&REG_NEWLINE)
+		cs->bmp['\n' >> 3] |= 1 << ('\n' & 7);
 
-		for (i = p->g->csetsize - 1; i >= 0; i--)
-			if (CHIN(cs, i) && isalpha(i)) {
-				ci = othercase((int)i);
-				if (ci != i)
-					CHadd(cs, ci);
-			}
-		if (cs->multis != NULL)
-			mccase(p, cs);
-	}
-	if (invert) {
-		ssize_t i;
-
-		for (i = p->g->csetsize - 1; i >= 0; i--)
-			if (CHIN(cs, i))
-				CHsub(cs, (int)i);
-			else
-				CHadd(cs, (int)i);
-		if (p->g->cflags&REG_NEWLINE)
-			CHsub(cs, '\n');
-		if (cs->multis != NULL)
-			mcinvert(p, cs);
-	}
-
-	assert(cs->multis == NULL);		/* xxx */
-
-	if (nch(p, cs) == 1) {		/* optimize singleton sets */
-		ordinary(p, firstch(p, cs));
+	if ((ch = singleton(cs)) != OUT) {	/* optimize singleton sets */
+		ordinary(p, ch);
 		freeset(p, cs);
 	} else
-		EMIT(OANYOF, freezeset(p, cs));
+		EMIT(OANYOF, (size_t)(cs - p->g->sets));
+}
+
+static int
+p_range_cmp(wchar_t c1, wchar_t c2)
+{
+#ifdef REGEX_LIBC_COLLATE
+	return __wcollate_range_cmp(c1, c2);
+#elif defined(NLS)
+	/* Copied from libc/collate __wcollate_range_cmp */
+	wchar_t s1[2], s2[2];
+
+	s1[0] = c1;
+	s1[1] = L'\0';
+	s2[0] = c2;
+	s2[1] = L'\0';
+	return wcscoll(s1, s2);
+#else
+	char s1[2], s2[2];
+
+	s1[0] = (char)c1;
+	s1[1] = '\0';
+	s2[0] = (char)c2;
+	s2[1] = '\0';
+	return strcoll(s1, s2);
+#endif
 }
 
 /*
@@ -840,13 +1175,15 @@
  == static void p_b_term(struct parse *p, cset *cs);
  */
 static void
-p_b_term(
-    struct parse *p,
-    cset *cs)
+p_b_term(struct parse *p, cset *cs)
 {
 	char c;
-	char start, finish;
-	int i;
+	wint_t start, finish;
+	wint_t i;
+#ifdef REGEX_LIBC_COLLATE
+	struct xlocale_collate *table =
+		(struct xlocale_collate*)__get_locale()->components[XLC_COLLATE];
+#endif
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
@@ -856,11 +1193,9 @@
 	case '[':
 		c = (MORE2()) ? PEEK2() : '\0';
 		break;
-
 	case '-':
 		SETERROR(REG_ERANGE);
 		return;			/* NOTE RETURN */
-
 	default:
 		c = '\0';
 		break;
@@ -869,24 +1204,23 @@
 	switch (c) {
 	case ':':		/* character class */
 		NEXT2();
-		REQUIRE(MORE(), REG_EBRACK);
+		(void)REQUIRE(MORE(), REG_EBRACK);
 		c = PEEK();
-		REQUIRE(c != '-' && c != ']', REG_ECTYPE);
+		(void)REQUIRE(c != '-' && c != ']', REG_ECTYPE);
 		p_b_cclass(p, cs);
-		REQUIRE(MORE(), REG_EBRACK);
-		REQUIRE(EATTWO(':', ']'), REG_ECTYPE);
+		(void)REQUIRE(MORE(), REG_EBRACK);
+		(void)REQUIRE(EATTWO(':', ']'), REG_ECTYPE);
 		break;
 	case '=':		/* equivalence class */
 		NEXT2();
-		REQUIRE(MORE(), REG_EBRACK);
+		(void)REQUIRE(MORE(), REG_EBRACK);
 		c = PEEK();
-		REQUIRE(c != '-' && c != ']', REG_ECOLLATE);
+		(void)REQUIRE(c != '-' && c != ']', REG_ECOLLATE);
 		p_b_eclass(p, cs);
-		REQUIRE(MORE(), REG_EBRACK);
-		REQUIRE(EATTWO('=', ']'), REG_ECOLLATE);
+		(void)REQUIRE(MORE(), REG_EBRACK);
+		(void)REQUIRE(EATTWO('=', ']'), REG_ECOLLATE);
 		break;
 	default:		/* symbol, ordinary character, or range */
-/* xxx revision needed for multichar stuff */
 		start = p_b_symbol(p);
 		if (SEE('-') && MORE2() && PEEK2() != ']') {
 			/* range */
@@ -897,51 +1231,103 @@
 				finish = p_b_symbol(p);
 		} else
 			finish = start;
-/* xxx what about signed chars here... */
-		REQUIRE(start <= finish, REG_ERANGE);
-		for (i = start; i <= finish; i++)
-			CHadd(cs, i);
+		if (start == finish)
+			CHadd(p, cs, start);
+		else {
+#ifdef REGEX_LIBC_COLLATE
+			if (table->__collate_load_error || MB_CUR_MAX > 1) {
+#else
+			if (MB_CUR_MAX > 1) {
+#endif
+				(void)REQUIRE(start <= finish, REG_ERANGE);
+				CHaddrange(p, cs, start, finish);
+			} else {
+				(void)REQUIRE(p_range_cmp(start, finish) <= 0, REG_ERANGE);
+				for (i = 0; i <= UCHAR_MAX; i++) {
+					if (p_range_cmp(start, i) <= 0 &&
+					    p_range_cmp(i, finish) <= 0 )
+						CHadd(p, cs, i);
+				}
+			}
+		}
 		break;
 	}
 }
 
+#ifdef REGEX_GNU_EXTENSIONS
+/*
+ - p_b_pseudoclass - parse a pseudo-class (\w, \W, \s, \S)
+ == static int p_b_pseudoclass(struct parse *p, char c)
+ */
+static int
+p_b_pseudoclass(struct parse *p, char c) {
+	cset *cs;
+
+	if ((cs = allocset(p)) == NULL)
+		return(0);
+
+	if (p->g->cflags&REG_ICASE)
+		cs->icase = 1;
+
+	switch (c) {
+	case 'W':
+		cs->invert = 1;
+		/* FALLTHROUGH */
+	case 'w':
+		p_b_cclass_named(p, cs, "alnum");
+		break;
+	case 'S':
+		cs->invert = 1;
+		/* FALLTHROUGH */
+	case 's':
+		p_b_cclass_named(p, cs, "space");
+		break;
+	default:
+		return(0);
+	}
+
+	EMIT(OANYOF, (size_t)(cs - p->g->sets));
+	return(1);
+}
+#endif
+
 /*
  - p_b_cclass - parse a character-class name and deal with it
  == static void p_b_cclass(struct parse *p, cset *cs);
  */
 static void
-p_b_cclass(
-    struct parse *p,
-    cset *cs)
+p_b_cclass(struct parse *p, cset *cs)
 {
-	const char *sp;
-	const struct cclass *cp;
+	const char *sp = p->next;
 	size_t len;
-	const char *u;
-	char c;
+	char clname[16];
 
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	sp = p->next;
-
-	while (MORE() && isalpha((unsigned char)PEEK()))
+	while (MORE() && isalpha((uch)PEEK()))
 		NEXT();
 	len = p->next - sp;
-	for (cp = cclasses; cp->name != NULL; cp++)
-		if (strncmp(cp->name, sp, len) == 0 && cp->name[len] == '\0')
-			break;
-	if (cp->name == NULL) {
-		/* oops, didn't find it */
+	if (len >= sizeof(clname) - 1) {
 		SETERROR(REG_ECTYPE);
 		return;
 	}
+	memcpy(clname, sp, len);
+	clname[len] = '\0';
 
-	u = cp->chars;
-	while ((c = *u++) != '\0')
-		CHadd(cs, c);
-	for (u = cp->multis; *u != '\0'; u += strlen(u) + 1)
-		MCadd(p, cs, u);
+	p_b_cclass_named(p, cs, clname);
+}
+
+/*
+ - p_b_cclass_named - deal with a named character class
+ == static void p_b_cclass_named(struct parse *p, cset *cs, const char []);
+ */
+static void
+p_b_cclass_named(struct parse *p, cset *cs, const char clname[]) {
+	wctype_t wct;
+
+	if ((wct = wctype(clname)) == 0) {
+		SETERROR(REG_ECTYPE);
+		return;
+	}
+	CHaddtype(p, cs, wct);
 }
 
 /*
@@ -951,58 +1337,52 @@
  * This implementation is incomplete. xxx
  */
 static void
-p_b_eclass(
-    struct parse *p,
-    cset *cs)
+p_b_eclass(struct parse *p, cset *cs)
 {
-	char c;
+	wint_t c;
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
 
 	c = p_b_coll_elem(p, '=');
-	CHadd(cs, c);
+	CHadd(p, cs, c);
 }
 
 /*
  - p_b_symbol - parse a character or [..]ed multicharacter collating symbol
- == static char p_b_symbol(struct parse *p);
+ == static wint_t p_b_symbol(struct parse *p);
  */
-static char			/* value of symbol */
-p_b_symbol(
-    struct parse *p)
+static wint_t			/* value of symbol */
+p_b_symbol(struct parse *p)
 {
-	char value;
+	wint_t value;
 
 	_DIAGASSERT(p != NULL);
 
-	REQUIRE(MORE(), REG_EBRACK);
+	(void)REQUIRE(MORE(), REG_EBRACK);
 	if (!EATTWO('[', '.'))
-		return(GETNEXT());
+		return(WGETNEXT());
 
 	/* collating symbol */
 	value = p_b_coll_elem(p, '.');
-	REQUIRE(EATTWO('.', ']'), REG_ECOLLATE);
+	(void)REQUIRE(EATTWO('.', ']'), REG_ECOLLATE);
 	return(value);
 }
 
 /*
  - p_b_coll_elem - parse a collating-element name and look it up
- == static char p_b_coll_elem(struct parse *p, int endc);
+ == static wint_t p_b_coll_elem(struct parse *p, wint_t endc);
  */
-static char			/* value of collating element */
-p_b_coll_elem(
-    struct parse *p,
-    int endc)			/* name ended by endc,']' */
+static wint_t			/* value of collating element */
+p_b_coll_elem(struct parse *p,
+	wint_t endc)		/* name ended by endc,']' */
 {
-	const char *sp;
-	const struct cname *cp;
+	const char *sp = p->next;
+	struct cname *cp;
 	size_t len;
 
 	_DIAGASSERT(p != NULL);
 
-	sp = p->next;
-
 	while (MORE() && !SEETWO(endc, ']'))
 		NEXT();
 	if (!MORE()) {
@@ -1013,85 +1393,152 @@
 	for (cp = cnames; cp->name != NULL; cp++)
 		if (strncmp(cp->name, sp, len) == 0 && strlen(cp->name) == len)
 			return(cp->code);	/* known name */
-	if (len == 1)
-		return(*sp);	/* single character */
-	SETERROR(REG_ECOLLATE);			/* neither */
+#ifdef NLS
+	mbstate_t mbs;
+	wchar_t wc;
+	size_t clen;
+
+	memset(&mbs, 0, sizeof(mbs));
+	if ((clen = mbrtowc(&wc, sp, len, &mbs)) == len)
+		return (wc);			/* single character */
+	else if (clen == (size_t)-1 || clen == (size_t)-2)
+		SETERROR(REG_ILLSEQ);
+	else
+		SETERROR(REG_ECOLLATE);		/* neither */
 	return(0);
+#else
+	if (len == 1)
+		return *sp;    /* single character */
+	SETERROR(REG_ECOLLATE);                 /* neither */
+	return 0;
+#endif
+}
+
+/*
+ - may_escape - determine whether 'ch' is escape-able in the current context
+ == static int may_escape(struct parse *p, const wint_t ch)
+ */
+static bool
+may_escape(struct parse *p, const wint_t ch)
+{
+
+	if ((p->pflags & PFLAG_LEGACY_ESC) != 0)
+		return (true);
+	if (isalpha(ch) || ch == '\'' || ch == '`')
+		return (false);
+	return (true);
+#ifdef NOTYET
+	/*
+	 * Build a whitelist of characters that may be escaped to produce an
+	 * ordinary in the current context. This assumes that these have not
+	 * been otherwise interpreted as a special character. Escaping an
+	 * ordinary character yields undefined results according to
+	 * IEEE 1003.1-2008. Some extensions (notably, some GNU extensions) take
+	 * advantage of this and use escaped ordinary characters to provide
+	 * special meaning, e.g. \b, \B, \w, \W, \s, \S.
+	 */
+	switch(ch) {
+	case '|':
+	case '+':
+	case '?':
+		/* The above characters may not be escaped in BREs */
+		if (!(p->g->cflags&REG_EXTENDED))
+			return (false);
+		/* Fallthrough */
+	case '(':
+	case ')':
+	case '{':
+	case '}':
+	case '.':
+	case '[':
+	case ']':
+	case '\\':
+	case '*':
+	case '^':
+	case '$':
+		return (true);
+	default:
+		return (false);
+	}
+#endif
 }
 
 /*
  - othercase - return the case counterpart of an alphabetic
- == static int othercase(int ch);
+ == static wint_t othercase(wint_t ch);
  */
-static int			/* if no counterpart, return ch */
-othercase(
-    int ch)
+static wint_t			/* if no counterpart, return ch */
+othercase(wint_t ch)
 {
-	assert(isalpha(ch));
-	if (isupper(ch))
-		return(tolower(ch));
-	else if (islower(ch))
-		return(toupper(ch));
+	assert(iswalpha(ch));
+	if (iswupper(ch))
+		return(towlower(ch));
+	else if (iswlower(ch))
+		return(towupper(ch));
 	else			/* peculiar, but could happen */
 		return(ch);
 }
 
 /*
  - bothcases - emit a dualcase version of a two-case character
- == static void bothcases(struct parse *p, int ch);
+ == static void bothcases(struct parse *p, wint_t ch);
  *
  * Boy, is this implementation ever a kludge...
  */
 static void
-bothcases(
-    struct parse *p,
-    int ch)
+bothcases(struct parse *p, wint_t ch)
 {
-	const char *oldnext;
-	const char *oldend;
-	char bracket[3];
+	const char *oldnext = p->next;
+	const char *oldend = p->end;
+	char bracket[3 + MB_LEN_MAX];
+	size_t n;
 
 	_DIAGASSERT(p != NULL);
 
-	oldnext = p->next;
-	oldend = p->end;
-
 	assert(othercase(ch) != ch);	/* p_bracket() would recurse */
 	p->next = bracket;
-	p->end = bracket+2;
-	bracket[0] = ch;
-	bracket[1] = ']';
-	bracket[2] = '\0';
+#ifdef NLS
+	mbstate_t mbs;
+	memset(&mbs, 0, sizeof(mbs));
+	n = wcrtomb(bracket, ch, &mbs);
+	assert(n != (size_t)-1);
+#else
+	n = 0;
+	bracket[n++] = ch;
+#endif
+	bracket[n] = ']';
+	bracket[n + 1] = '\0';
+	p->end = bracket+n+1;
 	p_bracket(p);
-	assert(p->next == bracket+2);
+	assert(p->next == p->end);
 	p->next = oldnext;
 	p->end = oldend;
 }
 
 /*
  - ordinary - emit an ordinary character
- == static void ordinary(struct parse *p, int ch);
+ == static void ordinary(struct parse *p, wint_t ch);
  */
 static void
-ordinary(
-    struct parse *p,
-    int ch)
+ordinary(struct parse *p, wint_t ch)
 {
-	cat_t *cap;
-	unsigned char uc = (unsigned char)ch;
+	cset *cs;
 
 	_DIAGASSERT(p != NULL);
 
-	cap = p->g->categories;
-	if ((p->g->cflags & REG_ICASE) && isalpha(uc) && othercase(uc) != uc)
-		bothcases(p, uc);
+	if ((p->g->cflags&REG_ICASE) && iswalpha(ch) && othercase(ch) != ch)
+		bothcases(p, ch);
+	else if ((wint_t)(ch & OPDMASK) == ch)
+		EMIT(OCHAR, (size_t)ch);
 	else {
-		EMIT(OCHAR, (sopno)uc);
-		if (cap[uc] == 0) {
-			_DIAGASSERT(__type_fit(unsigned char,
-			    p->g->ncategories + 1));
-			cap[uc] = (unsigned char)p->g->ncategories++;
-		}
+		/*
+		 * Kludge: character is too big to fit into an OCHAR operand.
+		 * Emit a singleton set.
+		 */
+		if ((cs = allocset(p)) == NULL)
+			return;
+		CHadd(p, cs, ch);
+		EMIT(OANYOF, (size_t)(cs - p->g->sets));
 	}
 }
 
@@ -1102,18 +1549,14 @@
  * Boy, is this implementation ever a kludge...
  */
 static void
-nonnewline(
-    struct parse *p)
+nonnewline(struct parse *p)
 {
-	const char *oldnext;
-	const char *oldend;
+	const char *oldnext = p->next;
+	const char *oldend = p->end;
 	char bracket[4];
 
 	_DIAGASSERT(p != NULL);
 
-	oldnext = p->next;
-	oldend = p->end;
-
 	p->next = bracket;
 	p->end = bracket+3;
 	bracket[0] = '^';
@@ -1128,18 +1571,15 @@
 
 /*
  - repeat - generate code for a bounded repetition, recursively if needed
- == static void repeat(struct parse *p, sopno start, int from, int to,
- == size_t reclimit);
+ == static void repeat(struct parse *p, sopno start, int from, int to);
  */
 static void
-repeat(
-    struct parse *p,
-    sopno start,		/* operand from here to end of strip */
-    int from,			/* repeated from this number */
-    int to,			/* to this number of times (maybe INFINITY) */
-    size_t reclimit)
+repeat(struct parse *p,
+	sopno start,		/* operand from here to end of strip */
+	int from,		/* repeated from this number */
+	int to)			/* to this number of times (maybe INFINITY) */
 {
-	sopno finish;
+	sopno finish = HERE();
 #	define	N	2
 #	define	INF	3
 #	define	REP(f, t)	((f)*8 + (t))
@@ -1148,13 +1588,9 @@
 
 	_DIAGASSERT(p != NULL);
 
-	if (reclimit++ > RECLIMIT) 
-		p->error = REG_ESPACE;
-	if (p->error)
+	if (p->error != 0)	/* head off possible runaway recursion */
 		return;
 
-	finish = HERE();
-
 	assert(from <= to);
 
 	switch (REP(MAP(from), MAP(to))) {
@@ -1166,7 +1602,7 @@
 	case REP(0, INF):		/* as x{1,}? */
 		/* KLUDGE: emit y? as (y|) until subtle bug gets fixed */
 		INSERT(OCH_, start);		/* offset is wrong... */
-		repeat(p, start+1, 1, to, reclimit);
+		repeat(p, start+1, 1, to);
 		ASTERN(OOR1, start);
 		AHEAD(start);			/* ... fix it */
 		EMIT(OOR2, 0);
@@ -1186,7 +1622,7 @@
 		ASTERN(O_CH, THERETHERE());
 		copy = dupl(p, start+1, finish+1);
 		assert(copy == finish+4);
-		repeat(p, copy, 1, to-1, reclimit);
+		repeat(p, copy, 1, to-1);
 		break;
 	case REP(1, INF):		/* as x+ */
 		INSERT(OPLUS_, start);
@@ -1194,11 +1630,11 @@
 		break;
 	case REP(N, N):			/* as xx{m-1,n-1} */
 		copy = dupl(p, start, finish);
-		repeat(p, copy, from-1, to-1, reclimit);
+		repeat(p, copy, from-1, to-1);
 		break;
 	case REP(N, INF):		/* as xx{n-1,INF} */
 		copy = dupl(p, start, finish);
-		repeat(p, copy, from-1, to, reclimit);
+		repeat(p, copy, from-1, to);
 		break;
 	default:			/* "can't happen" */
 		SETERROR(REG_ASSERT);	/* just in case */
@@ -1207,13 +1643,39 @@
 }
 
 /*
+ - wgetnext - helper function for WGETNEXT() macro. Gets the next wide
+ - character from the parse struct, signals a REG_ILLSEQ error if the
+ - character can't be converted. Returns the number of bytes consumed.
+ */
+static wint_t
+wgetnext(struct parse *p)
+{
+#ifdef NLS
+	mbstate_t mbs;
+	wchar_t wc;
+	size_t n;
+
+	memset(&mbs, 0, sizeof(mbs));
+	n = mbrtowc(&wc, p->next, (size_t)(p->end - p->next), &mbs);
+	if (n == (size_t)-1 || n == (size_t)-2) {
+		SETERROR(REG_ILLSEQ);
+		return (0);
+	}
+	if (n == 0)
+		n = 1;
+	p->next += n;
+	return wc;
+#else
+	return *p->next++;
+#endif
+}
+
+/*
  - seterr - set an error condition
  == static int seterr(struct parse *p, int e);
  */
 static int			/* useless but makes type checking happy */
-seterr(
-    struct parse *p,
-    int e)
+seterr(struct parse *p, int e)
 {
 
 	_DIAGASSERT(p != NULL);
@@ -1230,55 +1692,22 @@
  == static cset *allocset(struct parse *p);
  */
 static cset *
-allocset(
-    struct parse *p)
+allocset(struct parse *p)
 {
-	size_t no;
-	size_t nc;
-	size_t nbytes;
-	cset *cs;
-	size_t css;
-	size_t i;
-	void *old_ptr;
+	cset *cs, *ncs;
 
 	_DIAGASSERT(p != NULL);
 
-	no = p->g->ncsets++;
-	css = (size_t)p->g->csetsize;
-	if (no >= p->ncsalloc) {	/* need another column of space */
-		p->ncsalloc += CHAR_BIT;
-		nc = p->ncsalloc;
-		assert(nc % CHAR_BIT == 0);
-		nbytes = nc / CHAR_BIT * css;
-		if (MEMSIZE(p) > MEMLIMIT)
-			goto oomem;
-		if (reallocarr(&p->g->sets, nc, sizeof(cset)))
-			goto oomem;
-		old_ptr = p->g->setbits;
-		if (reallocarr(&p->g->setbits, nc / CHAR_BIT, css)) {
-			free(old_ptr);
-			goto oomem;
-		}
-		if (old_ptr != p->g->setbits) {
-			for (i = 0; i < no; i++)
-				p->g->sets[i].ptr = p->g->setbits + css*(i/CHAR_BIT);
-		}
-		(void) memset((char *)p->g->setbits + (nbytes - css), 0, css);
+	ncs = reallocarray(p->g->sets, p->g->ncsets + 1, sizeof(*ncs));
+	if (ncs == NULL) {
+		SETERROR(REG_ESPACE);
+		return (NULL);
 	}
-
-	cs = &p->g->sets[no];
-	cs->ptr = p->g->setbits + css*((no)/CHAR_BIT);
-	cs->mask = 1 << (unsigned int)((no) % CHAR_BIT);
-	cs->hash = 0;
-	cs->smultis = 0;
-	cs->multis = NULL;
+	p->g->sets = ncs;
+	cs = &p->g->sets[p->g->ncsets++];
+	memset(cs, 0, sizeof(*cs));
 
 	return(cs);
-
-oomem:
-	SETERROR(REG_ESPACE);
-	/* caller's responsibility not to do set ops */
-	return NULL;
 }
 
 /*
@@ -1286,353 +1715,128 @@
  == static void freeset(struct parse *p, cset *cs);
  */
 static void
-freeset(
-    struct parse *p,
-    cset *cs)
+freeset(struct parse *p, cset *cs)
 {
-	size_t i;
 	cset *top;
-	size_t css;
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
 
 	top = &p->g->sets[p->g->ncsets];
-	css = (size_t)p->g->csetsize;
 
-	for (i = 0; i < css; i++)
-		CHsub(cs, (int)i);
+	free(cs->wides);
+	free(cs->ranges);
+	free(cs->types);
+	memset(cs, 0, sizeof(*cs));
 	if (cs == top-1)	/* recover only the easy case */
 		p->g->ncsets--;
 }
 
 /*
- - freezeset - final processing on a set of characters
- == static int freezeset(struct parse *p, cset *cs);
- *
- * The main task here is merging identical sets.  This is usually a waste
- * of time (although the hash code minimizes the overhead), but can win
- * big if REG_ICASE is being used.  REG_ICASE, by the way, is why the hash
- * is done using addition rather than xor -- all ASCII [aA] sets xor to
- * the same value!
+ - singleton - Determine whether a set contains only one character,
+ - returning it if so, otherwise returning OUT.
  */
-static sopno			/* set number */
-freezeset(
-    struct parse *p,
-    cset *cs)
+static wint_t
+singleton(cset *cs)
 {
-	uch h;
-	size_t i;
-	cset *top;
-	cset *cs2;
-	size_t css;
+	wint_t i, s, n;
 
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	h = cs->hash;
-	top = &p->g->sets[p->g->ncsets];
-	css = (size_t)p->g->csetsize;
-
-	/* look for an earlier one which is the same */
-	for (cs2 = &p->g->sets[0]; cs2 < top; cs2++)
-		if (cs2->hash == h && cs2 != cs) {
-			/* maybe */
-			for (i = 0; i < css; i++)
-				if (!!CHIN(cs2, i) != !!CHIN(cs, i))
-					break;		/* no */
-			if (i == css)
-				break;			/* yes */
-		}
-
-	if (cs2 < top) {	/* found one */
-		freeset(p, cs);
-		cs = cs2;
-	}
-
-	return (sopno)(cs - p->g->sets);
-}
-
-/*
- - firstch - return first character in a set (which must have at least one)
- == static int firstch(struct parse *p, cset *cs);
- */
-static int			/* character; there is no "none" value */
-firstch(
-    struct parse *p,
-    cset *cs)
-{
-	size_t i;
-	size_t css;
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	css = (size_t)p->g->csetsize;
-
-	for (i = 0; i < css; i++)
-		if (CHIN(cs, i))
-			return((char)i);
-	assert(never);
-	return(0);		/* arbitrary */
-}
-
-/*
- - nch - number of characters in a set
- == static int nch(struct parse *p, cset *cs);
- */
-static int
-nch(
-    struct parse *p,
-    cset *cs)
-{
-	size_t i;
-	size_t css;
-	int n = 0;
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	css = (size_t)p->g->csetsize;
-
-	for (i = 0; i < css; i++)
-		if (CHIN(cs, i))
+	for (i = n = 0; i < NC; i++)
+		if (CHIN(cs, i)) {
 			n++;
-	return(n);
+			s = i;
+		}
+	if (n == 1)
+		return (s);
+	if (cs->nwides == 1 && cs->nranges == 0 && cs->ntypes == 0 &&
+	    cs->icase == 0)
+		return (cs->wides[0]);
+	/* Don't bother handling the other cases. */
+	return (OUT);
 }
 
 /*
- - mcadd - add a collating element to a cset
- == static void mcadd(struct parse *p, cset *cs, \
- ==	char *cp);
+ - CHadd - add character to character set.
  */
 static void
-mcadd(
-    struct parse *p,
-    cset *cs,
-    const char *cp)
+CHadd(struct parse *p, cset *cs, wint_t ch)
 {
-	size_t oldend;
+	wint_t nch, *newwides;
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
-	_DIAGASSERT(cp != NULL);
 
-	oldend = cs->smultis;
+	assert(ch >= 0);
+	if (ch < NC)
+		cs->bmp[(unsigned)ch >> 3] |= 1 << (ch & 7);
+	else {
+		newwides = reallocarray(cs->wides, cs->nwides + 1,
+		    sizeof(*cs->wides));
+		if (newwides == NULL) {
+			SETERROR(REG_ESPACE);
+			return;
+		}
+		cs->wides = newwides;
+		cs->wides[cs->nwides++] = ch;
+	}
+	if (cs->icase) {
+		if ((nch = towlower(ch)) < NC)
+			cs->bmp[(unsigned)nch >> 3] |= 1 << (nch & 7);
+		if ((nch = towupper(ch)) < NC)
+			cs->bmp[(unsigned)nch >> 3] |= 1 << (nch & 7);
+	}
+}
 
-	cs->smultis += strlen(cp) + 1;
-	if (cs->multis == NULL)
-		cs->multis = malloc(cs->smultis);
-	else
-		cs->multis = realloc(cs->multis, cs->smultis);
-	if (cs->multis == NULL) {
+/*
+ - CHaddrange - add all characters in the range [min,max] to a character set.
+ */
+static void
+CHaddrange(struct parse *p, cset *cs, wint_t min, wint_t max)
+{
+	crange *newranges;
+
+	_DIAGASSERT(p != NULL);
+	_DIAGASSERT(cs != NULL);
+
+	for (; min < NC && min <= max; min++)
+		CHadd(p, cs, min);
+	if (min >= max)
+		return;
+	newranges = reallocarray(cs->ranges, cs->nranges + 1,
+	    sizeof(*cs->ranges));
+	if (newranges == NULL) {
 		SETERROR(REG_ESPACE);
 		return;
 	}
-
-	(void) strcpy(cs->multis + oldend - 1, cp);
-	cs->multis[cs->smultis - 1] = '\0';
+	cs->ranges = newranges;
+	cs->ranges[cs->nranges].min = min;
+	cs->ranges[cs->nranges].max = max;
+	cs->nranges++;
 }
 
-#if 0
 /*
- - mcsub - subtract a collating element from a cset
- == static void mcsub(cset *cs, char *cp);
+ - CHaddtype - add all characters of a certain type to a character set.
  */
 static void
-mcsub(
-    cset *cs,
-    char *cp)
+CHaddtype(struct parse *p, cset *cs, wctype_t wct)
 {
-	char *fp;
-	size_t len;
+	wint_t i;
+	wctype_t *newtypes;
 
+	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(cs != NULL);
-	_DIAGASSERT(cp != NULL);
 
-	fp = mcfind(cs, cp);
-	len = strlen(fp);
-
-	assert(fp != NULL);
-	(void) memmove(fp, fp + len + 1,
-				cs->smultis - (fp + len + 1 - cs->multis));
-	cs->smultis -= len;
-
-	if (cs->smultis == 0) {
-		free(cs->multis);
-		cs->multis = NULL;
+	for (i = 0; i < NC; i++)
+		if (iswctype(i, wct))
+			CHadd(p, cs, i);
+	newtypes = reallocarray(cs->types, cs->ntypes + 1,
+	    sizeof(*cs->types));
+	if (newtypes == NULL) {
+		SETERROR(REG_ESPACE);
 		return;
 	}
-
-	cs->multis = realloc(cs->multis, cs->smultis);
-	assert(cs->multis != NULL);
-}
-
-/*
- - mcin - is a collating element in a cset?
- == static int mcin(cset *cs, char *cp);
- */
-static int
-mcin(
-    cset *cs,
-    char *cp)
-{
-
-	_DIAGASSERT(cs != NULL);
-	_DIAGASSERT(cp != NULL);
-
-	return(mcfind(cs, cp) != NULL);
-}
-
-/*
- - mcfind - find a collating element in a cset
- == static char *mcfind(cset *cs, char *cp);
- */
-static char *
-mcfind(
-    cset *cs,
-    char *cp)
-{
-	char *p;
-
-	_DIAGASSERT(cs != NULL);
-	_DIAGASSERT(cp != NULL);
-
-	if (cs->multis == NULL)
-		return(NULL);
-	for (p = cs->multis; *p != '\0'; p += strlen(p) + 1)
-		if (strcmp(cp, p) == 0)
-			return(p);
-	return(NULL);
-}
-#endif
-
-/*
- - mcinvert - invert the list of collating elements in a cset
- == static void mcinvert(struct parse *p, cset *cs);
- *
- * This would have to know the set of possibilities.  Implementation
- * is deferred.
- */
-/* ARGSUSED */
-static void
-mcinvert(
-    struct parse *p,
-    cset *cs)
-{
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	assert(cs->multis == NULL);	/* xxx */
-}
-
-/*
- - mccase - add case counterparts of the list of collating elements in a cset
- == static void mccase(struct parse *p, cset *cs);
- *
- * This would have to know the set of possibilities.  Implementation
- * is deferred.
- */
-/* ARGSUSED */
-static void
-mccase(
-    struct parse *p,
-    cset *cs)
-{
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(cs != NULL);
-
-	assert(cs->multis == NULL);	/* xxx */
-}
-
-/*
- - isinsets - is this character in any sets?
- == static int isinsets(struct re_guts *g, int c);
- */
-static int			/* predicate */
-isinsets(
-    struct re_guts *g,
-    int c)
-{
-	uch *col;
-	size_t i;
-	size_t ncols;
-	unsigned uc = (unsigned char)c;
-
-	_DIAGASSERT(g != NULL);
-
-	if (g->setbits == NULL)
-		return 0;
-
-	ncols = (g->ncsets+(CHAR_BIT-1)) / CHAR_BIT;
-
-	for (i = 0, col = g->setbits; i < ncols; i++, col += g->csetsize)
-		if (col[uc] != 0)
-			return(1);
-	return(0);
-}
-
-/*
- - samesets - are these two characters in exactly the same sets?
- == static int samesets(struct re_guts *g, int c1, int c2);
- */
-static int			/* predicate */
-samesets(
-    struct re_guts *g,
-    int c1,
-    int c2)
-{
-	uch *col;
-	size_t i;
-	size_t ncols;
-	unsigned uc1 = (unsigned char)c1;
-	unsigned uc2 = (unsigned char)c2;
-
-	_DIAGASSERT(g != NULL);
-
-	ncols = (g->ncsets+(CHAR_BIT-1)) / CHAR_BIT;
-
-	for (i = 0, col = g->setbits; i < ncols; i++, col += g->csetsize)
-		if (col[uc1] != col[uc2])
-			return(0);
-	return(1);
-}
-
-/*
- - categorize - sort out character categories
- == static void categorize(struct parse *p, struct re_guts *g);
- */
-static void
-categorize(
-    struct parse *p,
-    struct re_guts *g)
-{
-	cat_t *cats;
-	int c;
-	int c2;
-	cat_t cat;
-
-	_DIAGASSERT(p != NULL);
-	_DIAGASSERT(g != NULL);
-
-	cats = g->categories;
-
-	/* avoid making error situations worse */
-	if (p->error != 0)
-		return;
-
-	for (c = CHAR_MIN; c <= CHAR_MAX; c++)
-		if (cats[c] == 0 && isinsets(g, c)) {
-			_DIAGASSERT(__type_fit(unsigned char,
-			    g->ncategories + 1));
-			cat = g->ncategories++;
-			cats[c] = cat;
-			for (c2 = c+1; c2 <= CHAR_MAX; c2++)
-				if (cats[c2] == 0 && samesets(g, c, c2))
-					cats[c2] = cat;
-		}
+	cs->types = newtypes;
+	cs->types[cs->ntypes++] = wct;
 }
 
 /*
@@ -1640,25 +1844,22 @@
  == static sopno dupl(struct parse *p, sopno start, sopno finish);
  */
 static sopno			/* start of duplicate */
-dupl(
-    struct parse *p,
-    sopno start,			/* from here */
-    sopno finish)			/* to this less one */
+dupl(struct parse *p,
+	sopno start,		/* from here */
+	sopno finish)		/* to this less one */
 {
-	sopno ret;
+	sopno ret = HERE();
 	sopno len = finish - start;
 
 	_DIAGASSERT(p != NULL);
 
-	ret = HERE();
-
 	assert(finish >= start);
 	if (len == 0)
 		return(ret);
-	if (!enlarge(p, p->ssize + len))/* this many unexpected additions */
-		return ret;
-	(void)memcpy(p->strip + p->slen, p->strip + start,
-	    (size_t)len * sizeof(sop));
+	if (!enlarge(p, p->ssize + len)) /* this many unexpected additions */
+		return(ret);
+	(void) memcpy(p->strip + p->slen,
+	    p->strip + start, len * sizeof(*p->strip));
 	p->slen += len;
 	return(ret);
 }
@@ -1672,17 +1873,14 @@
  * some changes to the data structures.  Maybe later.
  */
 static void
-doemit(
-    struct parse *p,
-    sop op,
-    sopno opnd)
+doemit(struct parse *p, sop op, size_t opnd)
 {
-	_DIAGASSERT(p != NULL);
-
 	/* avoid making error situations worse */
 	if (p->error != 0)
 		return;
 
+	_DIAGASSERT(p != NULL);
+
 	/* deal with oversize operands ("can't happen", more or less) */
 	assert(opnd < 1<<OPSHIFT);
 
@@ -1692,7 +1890,7 @@
 			return;
 
 	/* finally, it's all reduced to the easy case */
-	p->strip[p->slen++] = (sop)SOP(op, opnd);
+	p->strip[p->slen++] = (sopno)SOP(op, opnd);
 }
 
 /*
@@ -1700,11 +1898,7 @@
  == static void doinsert(struct parse *p, sop op, size_t opnd, sopno pos);
  */
 static void
-doinsert(
-    struct parse *p,
-    sop op,
-    sopno opnd,
-    sopno pos)
+doinsert(struct parse *p, sop op, size_t opnd, sopno pos)
 {
 	sopno sn;
 	sop s;
@@ -1732,7 +1926,8 @@
 		}
 	}
 
-	memmove(&p->strip[pos+1], &p->strip[pos], (HERE()-pos-1)*sizeof(sop));
+	memmove(&p->strip[pos+1], &p->strip[pos],
+	    (HERE()-pos-1)*sizeof(*p->strip));
 	p->strip[pos] = s;
 }
 
@@ -1741,10 +1936,7 @@
  == static void dofwd(struct parse *p, sopno pos, sop value);
  */
 static void
-dofwd(
-    struct parse *p,
-    sopno pos,
-    sopno value)
+dofwd(struct parse *p, sopno pos, sop value)
 {
 
 	_DIAGASSERT(p != NULL);
@@ -1754,25 +1946,29 @@
 		return;
 
 	assert(value < 1<<OPSHIFT);
-	p->strip[pos] = (sop)(OP(p->strip[pos]) | value);
+	p->strip[pos] = OP(p->strip[pos]) | value;
 }
 
 /*
  - enlarge - enlarge the strip
- == static void enlarge(struct parse *p, sopno size);
+ == static int enlarge(struct parse *p, sopno size);
  */
 static int
 enlarge(struct parse *p, sopno size)
 {
+	sop *sp;
+
 	_DIAGASSERT(p != NULL);
 
 	if (p->ssize >= size)
 		return 1;
 
-	if (MEMSIZE(p) > MEMLIMIT || reallocarr(&p->strip, size, sizeof(sop))) {
+	sp = reallocarray(p->strip, size, sizeof(*p->strip));
+	if (sp == NULL) {
 		SETERROR(REG_ESPACE);
 		return 0;
 	}
+	p->strip = sp;
 	p->ssize = size;
 	return 1;
 }
@@ -1782,18 +1978,18 @@
  == static void stripsnug(struct parse *p, struct re_guts *g);
  */
 static void
-stripsnug(
-    struct parse *p,
-    struct re_guts *g)
+stripsnug(struct parse *p, struct re_guts *g)
 {
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(g != NULL);
 
 	g->nstates = p->slen;
-	g->strip = p->strip;
-	reallocarr(&g->strip, p->slen, sizeof(sop));
-	/* Ignore error as tries to free memory only. */
+	g->strip = reallocarray(p->strip, p->slen, sizeof(*p->strip));
+	if (g->strip == NULL) {
+		SETERROR(REG_ESPACE);
+		g->strip = p->strip;
+	}
 }
 
 /*
@@ -1807,9 +2003,7 @@
  * Note that must and mlen got initialized during setup.
  */
 static void
-findmust(
-    struct parse *p,
-    struct re_guts *g)
+findmust(struct parse *p, struct re_guts *g)
 {
 	sop *scan;
 	sop *start = NULL;
@@ -1817,7 +2011,8 @@
 	sopno newlen;
 	sop s;
 	char *cp;
-	sopno i;
+	int offset;
+	mbstate_t mbs;
 
 	_DIAGASSERT(p != NULL);
 	_DIAGASSERT(g != NULL);
@@ -1826,16 +2021,39 @@
 	if (p->error != 0)
 		return;
 
+#ifdef notyet
+	/*
+	 * It's not generally safe to do a ``char'' substring search on
+	 * multibyte character strings, but it's safe for at least
+	 * UTF-8 (see RFC 3629).
+	 */
+	if (MB_CUR_MAX > 1 &&
+	    strcmp(_CurrentRuneLocale->__encoding, "UTF-8") != 0)
+		return;
+#endif
+
 	/* find the longest OCHAR sequence in strip */
 	newlen = 0;
+	offset = 0;
+	g->moffset = 0;
 	scan = g->strip + 1;
 	do {
 		s = *scan++;
 		switch (OP(s)) {
 		case OCHAR:		/* sequence member */
-			if (newlen == 0)		/* new sequence */
+			if (newlen == 0) {		/* new sequence */
+				memset(&mbs, 0, sizeof(mbs));
 				newstart = scan - 1;
+			}
+#ifdef NLS
+			char buf[MB_LEN_MAX];
+			size_t clen = wcrtomb(buf, (int)OPND(s), &mbs);
+			if (clen == (size_t)-1)
+				goto toohard;
+			newlen += (sopno)clen;
+#else
 			newlen++;
+#endif
 			break;
 		case OPLUS_:		/* things that don't break one */
 		case OLPAREN:
@@ -1843,60 +2061,346 @@
 			break;
 		case OQUEST_:		/* things that must be skipped */
 		case OCH_:
+			offset = altoffset(scan, offset);
 			scan--;
 			do {
 				scan += OPND(s);
 				s = *scan;
 				/* assert() interferes w debug printouts */
-				if (OP(s) != O_QUEST && OP(s) != O_CH &&
-							OP(s) != OOR2) {
+				if (OP(s) != O_QUEST &&
+				    OP(s) != O_CH && OP(s) != OOR2) {
 					g->iflags |= BAD;
 					return;
 				}
 			} while (OP(s) != O_QUEST && OP(s) != O_CH);
 			/* FALLTHROUGH */
-		default:		/* things that break a sequence */
-			if (newlen > g->mlen) {		/* ends one */
+		case OBOW:		/* things that break a sequence */
+		case OEOW:
+		case OBOL:
+		case OEOL:
+		case OBOS:
+		case OEOS:
+		case OWBND:
+		case ONWBND:
+		case O_QUEST:
+		case O_CH:
+		case OEND:
+			if (newlen > (sopno)g->mlen) {		/* ends one */
 				start = newstart;
 				g->mlen = newlen;
+				if (offset > -1) {
+					g->moffset += offset;
+					offset = newlen;
+				} else
+					g->moffset = offset;
+			} else {
+				if (offset > -1)
+					offset += newlen;
 			}
 			newlen = 0;
 			break;
+		case OANY:
+			if (newlen > (sopno)g->mlen) {		/* ends one */
+				start = newstart;
+				g->mlen = newlen;
+				if (offset > -1) {
+					g->moffset += offset;
+					offset = newlen;
+				} else
+					g->moffset = offset;
+			} else {
+				if (offset > -1)
+					offset += newlen;
+			}
+			if (offset > -1)
+				offset++;
+			newlen = 0;
+			break;
+		case OANYOF:		/* may or may not invalidate offset */
+			/* First, everything as OANY */
+			if (newlen > (sopno)g->mlen) {		/* ends one */
+				start = newstart;
+				g->mlen = newlen;
+				if (offset > -1) {
+					g->moffset += offset;
+					offset = newlen;
+				} else
+					g->moffset = offset;
+			} else {
+				if (offset > -1)
+					offset += newlen;
+			}
+			if (offset > -1)
+				offset++;
+			newlen = 0;
+			break;
+#ifdef NLS
+		toohard:/*FALLTHROUGH*/
+#endif
+		default:
+			/* Anything here makes it impossible or too hard
+			 * to calculate the offset -- so we give up;
+			 * save the last known good offset, in case the
+			 * must sequence doesn't occur later.
+			 */
+			if (newlen > (sopno)g->mlen) {		/* ends one */
+				start = newstart;
+				g->mlen = newlen;
+				if (offset > -1)
+					g->moffset += offset;
+				else
+					g->moffset = offset;
+			}
+			offset = -1;
+			newlen = 0;
+			break;
 		}
 	} while (OP(s) != OEND);
 
-	if (start == NULL)
-		g->mlen = 0;
-
-	if (g->mlen == 0)	/* there isn't one */
+	if (g->mlen == 0) {		/* there isn't one */
+		g->moffset = -1;
 		return;
+	}
 
 	/* turn it into a character string */
 	g->must = malloc((size_t)g->mlen + 1);
 	if (g->must == NULL) {		/* argh; just forget it */
 		g->mlen = 0;
+		g->moffset = -1;
 		return;
 	}
 	cp = g->must;
 	scan = start;
-	for (i = g->mlen; i > 0; i--) {
+	memset(&mbs, 0, sizeof(mbs));
+	while (cp < g->must + g->mlen) {
 		while (OP(s = *scan++) != OCHAR)
 			continue;
-		assert(cp < g->must + g->mlen);
-		*cp++ = (char)OPND(s);
+#ifdef NLS
+		size_t clen = wcrtomb(cp, (int)OPND(s), &mbs);
+		assert(clen != (size_t)-1);
+		cp += clen;
+#else
+		*cp++ = OPND(s);
+#endif
 	}
 	assert(cp == g->must + g->mlen);
 	*cp++ = '\0';		/* just on general principles */
 }
 
 /*
+ - altoffset - choose biggest offset among multiple choices
+ == static int altoffset(sop *scan, int offset);
+ *
+ * Compute, recursively if necessary, the largest offset among multiple
+ * re paths.
+ */
+static int
+altoffset(sop *scan, int offset)
+{
+	int largest;
+	int try;
+	sop s;
+
+	_DIAGASSERT(scan != NULL);
+
+	/* If we gave up already on offsets, return */
+	if (offset == -1)
+		return -1;
+
+	largest = 0;
+	try = 0;
+	s = *scan++;
+	while (OP(s) != O_QUEST && OP(s) != O_CH) {
+		switch (OP(s)) {
+		case OOR1:
+			if (try > largest)
+				largest = try;
+			try = 0;
+			break;
+		case OQUEST_:
+		case OCH_:
+			try = altoffset(scan, try);
+			if (try == -1)
+				return -1;
+			scan--;
+			do {
+				scan += OPND(s);
+				s = *scan;
+				if (OP(s) != O_QUEST &&
+				    OP(s) != O_CH && OP(s) != OOR2)
+					return -1;
+			} while (OP(s) != O_QUEST && OP(s) != O_CH);
+			/* We must skip to the next position, or we'll
+			 * leave altoffset() too early.
+			 */
+			scan++;
+			break;
+		case OANYOF:
+		case OCHAR:
+		case OANY:
+			try++;
+			/*FALLTHROUGH*/
+		case OBOW:
+		case OEOW:
+		case OWBND:
+		case ONWBND:
+		case OLPAREN:
+		case ORPAREN:
+		case OOR2:
+			break;
+		default:
+			try = -1;
+			break;
+		}
+		if (try == -1)
+			return -1;
+		s = *scan++;
+	}
+
+	if (try > largest)
+		largest = try;
+
+	return largest+offset;
+}
+
+/*
+ - computejumps - compute char jumps for BM scan
+ == static void computejumps(struct parse *p, struct re_guts *g);
+ *
+ * This algorithm assumes g->must exists and is has size greater than
+ * zero. It's based on the algorithm found on Computer Algorithms by
+ * Sara Baase.
+ *
+ * A char jump is the number of characters one needs to jump based on
+ * the value of the character from the text that was mismatched.
+ */
+static void
+computejumps(struct parse *p, struct re_guts *g)
+{
+	int ch;
+	size_t mindex;
+
+	_DIAGASSERT(p != NULL);
+	_DIAGASSERT(g != NULL);
+
+	/* Avoid making errors worse */
+	if (p->error != 0)
+		return;
+
+	g->charjump = calloc((NC_MAX + 1), sizeof(*g->charjump));
+	if (g->charjump == NULL)	/* Not a fatal error */
+		return;
+	/* Adjust for signed chars, if necessary */
+	g->charjump = &g->charjump[-(CHAR_MIN)];
+
+	/* If the character does not exist in the pattern, the jump
+	 * is equal to the number of characters in the pattern.
+	 */
+	for (ch = CHAR_MIN; ch < (CHAR_MAX + 1); ch++)
+		g->charjump[ch] = g->mlen;
+
+	/* If the character does exist, compute the jump that would
+	 * take us to the last character in the pattern equal to it
+	 * (notice that we match right to left, so that last character
+	 * is the first one that would be matched).
+	 */
+	for (mindex = 0; mindex < g->mlen; mindex++)
+		g->charjump[(int)g->must[mindex]] = g->mlen - mindex - 1;
+}
+
+/*
+ - computematchjumps - compute match jumps for BM scan
+ == static void computematchjumps(struct parse *p, struct re_guts *g);
+ *
+ * This algorithm assumes g->must exists and is has size greater than
+ * zero. It's based on the algorithm found on Computer Algorithms by
+ * Sara Baase.
+ *
+ * A match jump is the number of characters one needs to advance based
+ * on the already-matched suffix.
+ * Notice that all values here are minus (g->mlen-1), because of the way
+ * the search algorithm works.
+ */
+static void
+computematchjumps(struct parse *p, struct re_guts *g)
+{
+	size_t mindex;		/* General "must" iterator */
+	size_t suffix;		/* Keeps track of matching suffix */
+	size_t ssuffix;		/* Keeps track of suffixes' suffix */
+	size_t* pmatches;	/* pmatches[k] points to the next i
+				 * such that i+1...mlen is a substring
+				 * of k+1...k+mlen-i-1
+				 */
+
+	_DIAGASSERT(p != NULL);
+	_DIAGASSERT(g != NULL);
+
+	/* Avoid making errors worse */
+	if (p->error != 0)
+		return;
+
+	pmatches = calloc(g->mlen, sizeof(*pmatches));
+	if (pmatches == NULL) {
+		g->matchjump = NULL;
+		return;
+	}
+
+	g->matchjump = calloc(g->mlen, sizeof(*g->matchjump));
+	if (g->matchjump == NULL) {	/* Not a fatal error */
+		free(pmatches);
+		return;
+	}
+
+	/* Set maximum possible jump for each character in the pattern */
+	for (mindex = 0; mindex < g->mlen; mindex++)
+		g->matchjump[mindex] = 2 * g->mlen - mindex - 1;
+
+	/* Compute pmatches[] */
+	for (suffix = mindex = g->mlen; mindex-- > 0; suffix--) {
+		pmatches[mindex] = suffix;
+
+		/* If a mismatch is found, interrupting the substring,
+		 * compute the matchjump for that position. If no
+		 * mismatch is found, then a text substring mismatched
+		 * against the suffix will also mismatch against the
+		 * substring.
+		 */
+		while (suffix < g->mlen
+		    && g->must[mindex] != g->must[suffix]) {
+			g->matchjump[suffix] = MIN(g->matchjump[suffix],
+			    g->mlen - mindex - 1);
+			suffix = pmatches[suffix];
+		}
+	}
+
+	/* Compute the matchjump up to the last substring found to jump
+	 * to the beginning of the largest must pattern prefix matching
+	 * it's own suffix.
+	 */
+	for (mindex = 0; mindex <= suffix; mindex++)
+		g->matchjump[mindex] = MIN(g->matchjump[mindex],
+		    g->mlen + suffix - mindex);
+
+        ssuffix = pmatches[suffix];
+        while (suffix < g->mlen) {
+                while (suffix <= ssuffix && suffix < g->mlen) {
+                        g->matchjump[suffix] = MIN(g->matchjump[suffix],
+			    g->mlen + ssuffix - suffix);
+                        suffix++;
+                }
+		if (suffix < g->mlen)
+                	ssuffix = pmatches[ssuffix];
+        }
+
+	free(pmatches);
+}
+
+/*
  - pluscount - count + nesting
  == static sopno pluscount(struct parse *p, struct re_guts *g);
  */
 static sopno			/* nesting depth */
-pluscount(
-    struct parse *p,
-    struct re_guts *g)
+pluscount(struct parse *p, struct re_guts *g)
 {
 	sop *scan;
 	sop s;
diff --git a/libc/upstream-netbsd/lib/libc/regex/regerror.c b/libc/upstream-netbsd/lib/libc/regex/regerror.c
index e00d7c0..cfd7704 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regerror.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regerror.c
@@ -1,6 +1,9 @@
-/*	$NetBSD: regerror.c,v 1.23 2007/02/09 23:44:18 junyoung Exp $	*/
+/*	$NetBSD: regerror.c,v 1.26 2022/11/05 11:33:55 riastradh Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -34,76 +37,38 @@
  *	@(#)regerror.c	8.4 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regerror.c	8.4 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
 
 #include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)regerror.c	8.4 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regerror.c,v 1.23 2007/02/09 23:44:18 junyoung Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regerror.c 326025 2017-11-20 19:49:47Z pfg $");
 #endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regerror.c,v 1.26 2022/11/05 11:33:55 riastradh Exp $");
 
 #include "namespace.h"
 #include <sys/types.h>
-
-#include <assert.h>
-#include <ctype.h>
-#include <limits.h>
 #include <stdio.h>
-#include <stdlib.h>
 #include <string.h>
+#include <limits.h>
+#include <stdlib.h>
 #include <regex.h>
 
+#include "utils.h"
+
 #ifdef __weak_alias
 __weak_alias(regerror,_regerror)
 #endif
 
-#include "utils.h"
-
 /* ========= begin header generated by ./mkh ========= */
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 /* === regerror.c === */
-static const char *regatoi(const regex_t *preg, char *localbuf, size_t buflen);
+static const char *regatoi(const regex_t *preg, char *localbufm, size_t buflen);
 
 #ifdef __cplusplus
 }
@@ -126,6 +91,8 @@
  = #define	REG_EMPTY	14
  = #define	REG_ASSERT	15
  = #define	REG_INVARG	16
+ = #define	REG_ENOSYS	17
+ = #define	REG_ILLSEQ	18
  = #define	REG_ATOI	255	// convert name to number (!)
  = #define	REG_ITOA	0400	// convert number to name (!)
  */
@@ -134,36 +101,36 @@
 	const char *name;
 	const char *explain;
 } rerrs[] = {
-	{ REG_NOMATCH,	"REG_NOMATCH",	"regexec() failed to match" },
-	{ REG_BADPAT,	"REG_BADPAT",	"invalid regular expression" },
-	{ REG_ECOLLATE,	"REG_ECOLLATE",	"invalid collating element" },
-	{ REG_ECTYPE,	"REG_ECTYPE",	"invalid character class" },
-	{ REG_EESCAPE,	"REG_EESCAPE",	"trailing backslash (\\)" },
-	{ REG_ESUBREG,	"REG_ESUBREG",	"invalid backreference number" },
-	{ REG_EBRACK,	"REG_EBRACK",	"brackets ([ ]) not balanced" },
-	{ REG_EPAREN,	"REG_EPAREN",	"parentheses not balanced" },
-	{ REG_EBRACE,	"REG_EBRACE",	"braces not balanced" },
-	{ REG_BADBR,	"REG_BADBR",	"invalid repetition count(s)" },
-	{ REG_ERANGE,	"REG_ERANGE",	"invalid character range" },
-	{ REG_ESPACE,	"REG_ESPACE",	"out of memory" },
-	{ REG_BADRPT,	"REG_BADRPT",	"repetition-operator operand invalid" },
-	{ REG_EMPTY,	"REG_EMPTY",	"empty (sub)expression" },
-	{ REG_ASSERT,	"REG_ASSERT",	"\"can't happen\" -- you found a bug" },
-	{ REG_INVARG,	"REG_INVARG",	"invalid argument to regex routine" },
-	{ 0,		"",		"*** unknown regexp error code ***" }
+	{REG_NOMATCH,	"REG_NOMATCH",	"regexec() failed to match"},
+	{REG_BADPAT,	"REG_BADPAT",	"invalid regular expression"},
+	{REG_ECOLLATE,	"REG_ECOLLATE",	"invalid collating element"},
+	{REG_ECTYPE,	"REG_ECTYPE",	"invalid character class"},
+	{REG_EESCAPE,	"REG_EESCAPE",	"trailing backslash (\\)"},
+	{REG_ESUBREG,	"REG_ESUBREG",	"invalid backreference number"},
+	{REG_EBRACK,	"REG_EBRACK",	"brackets ([ ]) not balanced"},
+	{REG_EPAREN,	"REG_EPAREN",	"parentheses not balanced"},
+	{REG_EBRACE,	"REG_EBRACE",	"braces not balanced"},
+	{REG_BADBR,	"REG_BADBR",	"invalid repetition count(s)"},
+	{REG_ERANGE,	"REG_ERANGE",	"invalid character range"},
+	{REG_ESPACE,	"REG_ESPACE",	"out of memory"},
+	{REG_BADRPT,	"REG_BADRPT",	"repetition-operator operand invalid"},
+	{REG_EMPTY,	"REG_EMPTY",	"empty (sub)expression"},
+	{REG_ASSERT,	"REG_ASSERT",	"\"can't happen\" -- you found a bug"},
+	{REG_INVARG,	"REG_INVARG",	"invalid argument to regex routine"},
+	{REG_ILLSEQ,	"REG_ILLSEQ",	"illegal byte sequence"},
+	{0,		"",		"*** unknown regexp error code ***"}
 };
 
 /*
- * regerror - the interface to error numbers
- * extern size_t regerror(int, const regex_t *, char *, size_t);
+ - regerror - the interface to error numbers
+ = extern size_t regerror(int, const regex_t *, char *, size_t);
  */
 /* ARGSUSED */
 size_t
-regerror(
-    int errcode,
-    const regex_t *preg,
-    char *errbuf,
-    size_t errbuf_size)
+regerror(int errcode,
+	 const regex_t * __restrict preg,
+	 char * __restrict errbuf,
+	 size_t errbuf_size)
 {
 	const struct rerr *r;
 	size_t len;
@@ -172,21 +139,20 @@
 	char convbuf[50];
 
 	_DIAGASSERT(errcode != REG_ATOI || preg != NULL);
-	_DIAGASSERT(errbuf != NULL);
+	_DIAGASSERT(errbuf_size == 0 || errbuf != NULL);
 
-	if (errcode == REG_ATOI)
+	if (errcode == REG_ATOI) {
 		s = regatoi(preg, convbuf, sizeof convbuf);
-	else {
+	} else {
 		for (r = rerrs; r->code != 0; r++)
 			if (r->code == target)
 				break;
-	
-		if (errcode & REG_ITOA) {
-			if (r->code != 0) {
-				(void)strlcpy(convbuf, r->name, sizeof convbuf);
-			} else
-				(void)snprintf(convbuf, sizeof convbuf,
-				    "REG_0x%x", target);
+
+		if (errcode&REG_ITOA) {
+			if (r->code != 0)
+				(void) strlcpy(convbuf, r->name, sizeof(convbuf));
+			else
+				snprintf(convbuf, sizeof(convbuf), "REG_0x%x", target);
 			s = convbuf;
 		} else
 			s = r->explain;
@@ -194,21 +160,17 @@
 
 	len = strlen(s) + 1;
 	if (errbuf_size > 0)
-		(void)strlcpy(errbuf, s, errbuf_size);
+		(void) strlcpy(errbuf, s, errbuf_size);
 
 	return(len);
 }
 
 /*
- * regatoi - internal routine to implement REG_ATOI
- * static const char *regatoi(const regex_t *preg, char *localbuf,
- * size_t buflen);
+ - regatoi - internal routine to implement REG_ATOI
+ == static char *regatoi(const regex_t *preg, char *localbuf);
  */
 static const char *
-regatoi(
-    const regex_t *preg,
-    char *localbuf,
-    size_t buflen)
+regatoi(const regex_t *preg, char *localbuf, size_t buflen)
 {
 	const struct rerr *r;
 
@@ -218,6 +180,6 @@
 	if (r->code == 0)
 		return "0";
 
-	(void)snprintf(localbuf, buflen, "%d", r->code);
+	snprintf(localbuf, buflen, "%d", r->code);
 	return localbuf;
 }
diff --git a/libc/upstream-netbsd/lib/libc/regex/regex2.h b/libc/upstream-netbsd/lib/libc/regex/regex2.h
index 7c877ee..fbfff0d 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regex2.h
+++ b/libc/upstream-netbsd/lib/libc/regex/regex2.h
@@ -1,6 +1,9 @@
-/*	$NetBSD: regex2.h,v 1.13 2011/10/09 18:23:00 christos Exp $	*/
+/*	$NetBSD: regex2.h,v 1.15 2021/02/24 18:13:21 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -32,43 +35,7 @@
  * SUCH DAMAGE.
  *
  *	@(#)regex2.h	8.4 (Berkeley) 3/20/94
- */
-
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regex2.h	8.4 (Berkeley) 3/20/94
+ * $FreeBSD: head/lib/libc/regex/regex2.h 368359 2020-12-05 03:18:48Z kevans $
  */
 
 /*
@@ -109,68 +76,100 @@
  * In state representations, an operator's bit is on to signify a state
  * immediately *preceding* "execution" of that operator.
  */
-typedef u_int32_t sop;	/* strip operator */
-typedef size_t sopno;
-#define	OPRMASK	((u_int32_t)0xf8000000UL)
-#define	OPDMASK	((u_int32_t)0x07ffffffUL)
-#define	OPSHIFT	((unsigned)27)
+typedef uint32_t sop;	/* strip operator */
+typedef uint32_t sopno;
+#define	OPRMASK	0xf8000000U
+#define	OPDMASK	0x07ffffffU
+#define	OPSHIFT	(27U)
 #define	OP(n)	((n)&OPRMASK)
-#define	OPND(n)	((int)((n)&OPDMASK))
+#define	OPND(n)	((n)&OPDMASK)
 #define	SOP(op, opnd)	((op)|(opnd))
-
-#define OPC(n)	(((u_int32_t)(n))<<OPSHIFT)
-/* operators		   meaning	operand			*/
-/*					(back, fwd are offsets)	*/
-#define	OEND	OPC(1)	/* endmarker	-			*/
-#define	OCHAR	OPC(2)	/* character	unsigned char		*/
-#define	OBOL	OPC(3)	/* left anchor	-			*/
-#define	OEOL	OPC(4)	/* right anchor	-			*/
-#define	OANY	OPC(5)	/* .		-			*/
-#define	OANYOF	OPC(6)	/* [...]	set number		*/
-#define	OBACK_	OPC(7)	/* begin \d	paren number		*/
-#define	O_BACK	OPC(8)	/* end \d	paren number		*/
-#define	OPLUS_	OPC(9)	/* + prefix	fwd to suffix		*/
-#define	O_PLUS	OPC(10)	/* + suffix	back to prefix		*/
-#define	OQUEST_	OPC(11)	/* ? prefix	fwd to suffix		*/
-#define	O_QUEST	OPC(12)	/* ? suffix	back to prefix		*/
-#define	OLPAREN	OPC(13)	/* (		fwd to )		*/
-#define	ORPAREN	OPC(14)	/* )		back to (		*/
-#define	OCH_	OPC(15)	/* begin choice	fwd to OOR2		*/
-#define	OOR1	OPC(16)	/* | pt. 1	back to OOR1 or OCH_	*/
-#define	OOR2	OPC(17)	/* | pt. 2	fwd to OOR2 or O_CH	*/
-#define	O_CH	OPC(18)	/* end choice	back to OOR1		*/
-#define	OBOW	OPC(19)	/* begin word	-			*/
-#define	OEOW	OPC(20)	/* end word	-			*/
+/* operators			   meaning	operand			*/
+/*						(back, fwd are offsets)	*/
+#define	OEND	(1U<<OPSHIFT)	/* endmarker	-			*/
+#define	OCHAR	(2U<<OPSHIFT)	/* character	wide character		*/
+#define	OBOL	(3U<<OPSHIFT)	/* left anchor	-			*/
+#define	OEOL	(4U<<OPSHIFT)	/* right anchor	-			*/
+#define	OANY	(5U<<OPSHIFT)	/* .		-			*/
+#define	OANYOF	(6U<<OPSHIFT)	/* [...]	set number		*/
+#define	OBACK_	(7U<<OPSHIFT)	/* begin \d	paren number		*/
+#define	O_BACK	(8U<<OPSHIFT)	/* end \d	paren number		*/
+#define	OPLUS_	(9U<<OPSHIFT)	/* + prefix	fwd to suffix		*/
+#define	O_PLUS	(10U<<OPSHIFT)	/* + suffix	back to prefix		*/
+#define	OQUEST_	(11U<<OPSHIFT)	/* ? prefix	fwd to suffix		*/
+#define	O_QUEST	(12U<<OPSHIFT)	/* ? suffix	back to prefix		*/
+#define	OLPAREN	(13U<<OPSHIFT)	/* (		fwd to )		*/
+#define	ORPAREN	(14U<<OPSHIFT)	/* )		back to (		*/
+#define	OCH_	(15U<<OPSHIFT)	/* begin choice	fwd to OOR2		*/
+#define	OOR1	(16U<<OPSHIFT)	/* | pt. 1	back to OOR1 or OCH_	*/
+#define	OOR2	(17U<<OPSHIFT)	/* | pt. 2	fwd to OOR2 or O_CH	*/
+#define	O_CH	(18U<<OPSHIFT)	/* end choice	back to OOR1		*/
+#define	OBOW	(19U<<OPSHIFT)	/* begin word	-			*/
+#define	OEOW	(20U<<OPSHIFT)	/* end word	-			*/
+#define	OBOS	(21U<<OPSHIFT)	/* begin subj.  -			*/
+#define	OEOS	(22U<<OPSHIFT)	/* end subj.	-			*/
+#define	OWBND	(23U<<OPSHIFT)	/* word bound	-			*/
+#define	ONWBND	(24U<<OPSHIFT)	/* not bound	-			*/
 
 /*
- * Structure for [] character-set representation.  Character sets are
- * done as bit vectors, grouped 8 to a byte vector for compactness.
- * The individual set therefore has both a pointer to the byte vector
- * and a mask to pick out the relevant bit of each byte.  A hash code
- * simplifies testing whether two sets could be identical.
- *
- * This will get trickier for multicharacter collating elements.  As
- * preliminary hooks for dealing with such things, we also carry along
- * a string of multi-character elements, and decide the size of the
- * vectors at run time.
+ * Structures for [] character-set representation.
  */
 typedef struct {
-	uch *ptr;		/* -> uch [csetsize] */
-	uch mask;		/* bit within array */
-	uch hash;		/* hash code */
-	size_t smultis;
-	char *multis;		/* -> char[smulti]  ab\0cd\0ef\0\0 */
+	wint_t		min;
+	wint_t		max;
+} crange;
+typedef struct {
+	unsigned char	bmp[NC_MAX / 8];
+	wctype_t	*types;
+	unsigned int	ntypes;
+	wint_t		*wides;
+	unsigned int	nwides;
+	crange		*ranges;
+	unsigned int	nranges;
+	int		invert;
+	int		icase;
 } cset;
-/* note that CHadd and CHsub are unsafe, and CHIN doesn't yield 0/1 */
-#define	CHadd(cs, c)	((cs)->ptr[(uch)(c)] |= (cs)->mask, (cs)->hash += (c))
-#define	CHsub(cs, c)	((cs)->ptr[(uch)(c)] &= ~(cs)->mask, (cs)->hash -= (c))
-#define	CHIN(cs, c)	((cs)->ptr[(uch)(c)] & (cs)->mask)
-#define	MCadd(p, cs, cp)	mcadd(p, cs, cp)	/* regcomp() internal fns */
-#define	MCsub(p, cs, cp)	mcsub(p, cs, cp)
-#define	MCin(p, cs, cp)	mcin(p, cs, cp)
 
-/* stuff for character categories */
-typedef unsigned char cat_t;
+static int
+CHIN1(cset *cs, wint_t ch)
+{
+	unsigned int i;
+
+	assert(ch >= 0);
+	if (ch < NC)
+		return (((cs->bmp[(unsigned)ch >> 3] & (1 << (ch & 7))) != 0) ^
+		    cs->invert);
+	for (i = 0; i < cs->nwides; i++) {
+		if (cs->icase) {
+			if (ch == towlower(cs->wides[i]) ||
+			    ch == towupper(cs->wides[i]))
+				return (!cs->invert);
+		} else if (ch == cs->wides[i])
+			return (!cs->invert);
+	}
+	for (i = 0; i < cs->nranges; i++)
+		if (cs->ranges[i].min <= ch && ch <= cs->ranges[i].max)
+			return (!cs->invert);
+	for (i = 0; i < cs->ntypes; i++)
+		if (iswctype(ch, cs->types[i]))
+			return (!cs->invert);
+	return (cs->invert);
+}
+
+static __inline int
+CHIN(cset *cs, wint_t ch)
+{
+
+	assert(ch >= 0);
+	if (ch < NC)
+		return (((cs->bmp[(unsigned)ch >> 3] & (1 << (ch & 7))) != 0) ^
+		    cs->invert);
+	else if (cs->icase)
+		return (CHIN1(cs, ch) || CHIN1(cs, towlower(ch)) ||
+		    CHIN1(cs, towupper(ch)));
+	else
+		return (CHIN1(cs, ch));
+}
 
 /*
  * main compiled-expression structure
@@ -179,10 +178,8 @@
 	int magic;
 #		define	MAGIC2	((('R'^0200)<<8)|'E')
 	sop *strip;		/* malloced area for strip */
-	size_t csetsize;	/* number of bits in a cset vector */
 	size_t ncsets;		/* number of csets in use */
 	cset *sets;		/* -> cset [ncsets] */
-	uch *setbits;		/* -> uch[csetsize][ncsets/CHAR_BIT] */
 	int cflags;		/* copy of regcomp() cflags argument */
 	sopno nstates;		/* = number of sops */
 	sopno firststate;	/* the initial OEND (normally 0) */
@@ -193,17 +190,17 @@
 #		define	BAD	04	/* something wrong */
 	size_t nbol;		/* number of ^ used */
 	size_t neol;		/* number of $ used */
-	size_t ncategories;	/* how many character categories */
-	cat_t *categories;	/* ->catspace[-CHAR_MIN] */
 	char *must;		/* match must contain this string */
+	int moffset;		/* latest point at which must may be located */
+	size_t *charjump;	/* Boyer-Moore char jump table */
+	size_t *matchjump;	/* Boyer-Moore match jump table */
 	size_t mlen;		/* length of must */
 	size_t nsub;		/* copy of re_nsub */
 	int backrefs;		/* does it use back references? */
 	sopno nplus;		/* how deep does it nest +s? */
-	/* catspace must be last */
-	cat_t catspace[1];	/* actually [NC] */
 };
 
 /* misc utilities */
-#define	OUT	(CHAR_MAX+1)	/* a non-character value */
-#define	ISWORD(c)	(isalnum((unsigned char)c) || (c) == '_')
+#define	OUT	(CHAR_MIN - 1)	/* a non-character value */
+#define	IGN	(CHAR_MIN - 2)
+#define ISWORD(c)       (iswalnum((uch)(c)) || (c) == '_')
diff --git a/libc/upstream-netbsd/lib/libc/regex/regexec.c b/libc/upstream-netbsd/lib/libc/regex/regexec.c
index f16e0b6..213a90b 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regexec.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regexec.c
@@ -1,6 +1,9 @@
-/*	$NetBSD: regexec.c,v 1.22 2012/03/13 21:13:43 christos Exp $	*/
+/*	$NetBSD: regexec.c,v 1.26 2021/02/26 19:24:47 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -34,91 +37,96 @@
  *	@(#)regexec.c	8.3 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regexec.c	8.3 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
 
 #include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)regexec.c	8.3 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regexec.c,v 1.22 2012/03/13 21:13:43 christos Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regexec.c 326025 2017-11-20 19:49:47Z pfg $");
 #endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regexec.c,v 1.26 2021/02/26 19:24:47 christos Exp $");
 
 /*
  * the outer shell of regexec()
  *
- * This file includes engine.c *twice*, after muchos fiddling with the
+ * This file includes engine.c three times, after muchos fiddling with the
  * macros that code uses.  This lets the same code operate on two different
- * representations for state sets.
+ * representations for state sets and characters.
  */
-#include "namespace.h"
-#include <sys/types.h>
 
-#include <assert.h>
-#include <ctype.h>
-#include <limits.h>
+#ifndef LIBHACK
+#include "namespace.h"
+#endif
+#include <sys/types.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <limits.h>
+#include <ctype.h>
 #include <regex.h>
 
-#ifdef __weak_alias
+#if defined(__weak_alias) && !defined(LIBHACK)
 __weak_alias(regexec,_regexec)
 #endif
 
 #include "utils.h"
 #include "regex2.h"
 
+static __inline size_t
+xmbrtowc(wint_t *wi, const char *s, size_t n, mbstate_t *mbs, wint_t dummy)
+{
+#ifdef NLS
+	size_t nr;
+	wchar_t wc;
+
+	nr = mbrtowc(&wc, s, n, mbs);
+	if (wi != NULL)
+		*wi = wc;
+	if (nr == 0)
+		return (1);
+	else if (nr == (size_t)-1 || nr == (size_t)-2) {
+		memset(mbs, 0, sizeof(*mbs));
+		if (wi != NULL)
+			*wi = dummy;
+		return (1);
+	} else
+                return (nr);
+#else
+	if (wi)
+		*wi = *s;
+	return 1;
+#endif
+}
+
+static __inline size_t
+xmbrtowc_dummy(wint_t *wi,
+		const char *s,
+		size_t n __unused,
+		mbstate_t *mbs __unused,
+		wint_t dummy __unused)
+{
+
+	if (wi != NULL)
+		*wi = (unsigned char)*s;
+	return (1);
+}
+
 /* macros for manipulating states, small version */
-#define	states	unsigned long
-#define	states1	unsigned long	/* for later use in regexec() decision */
+#define	states	long
+#define	states1	states		/* for later use in regexec() decision */
 #define	CLEAR(v)	((v) = 0)
 #define	SET0(v, n)	((v) &= ~((unsigned long)1 << (n)))
 #define	SET1(v, n)	((v) |= (unsigned long)1 << (n))
 #define	ISSET(v, n)	(((v) & ((unsigned long)1 << (n))) != 0)
 #define	ASSIGN(d, s)	((d) = (s))
 #define	EQ(a, b)	((a) == (b))
-#define	STATEVARS	int dummy	/* dummy version */
+#define	STATEVARS	long dummy	/* dummy version */
 #define	STATESETUP(m, n)	/* nothing */
 #define	STATETEARDOWN(m)	/* nothing */
 #define	SETUP(v)	((v) = 0)
-#define	onestate	unsigned long
+#define	onestate	long
 #define	INIT(o, n)	((o) = (unsigned long)1 << (n))
 #define	INC(o)	((o) <<= 1)
 #define	ISSTATEIN(v, o)	(((v) & (o)) != 0)
@@ -127,6 +135,9 @@
 #define	FWD(dst, src, n)	((dst) |= ((unsigned long)(src)&(here)) << (n))
 #define	BACK(dst, src, n)	((dst) |= ((unsigned long)(src)&(here)) >> (n))
 #define	ISSETBACK(v, n)	(((v) & ((unsigned long)here >> (n))) != 0)
+/* no multibyte support */
+#define	XMBRTOWC	xmbrtowc_dummy
+#define	ZAPSTATE(mbs)	((void)(mbs))
 /* function names */
 #define SNAMES			/* engine.c looks after details */
 
@@ -152,26 +163,25 @@
 #undef	BACK
 #undef	ISSETBACK
 #undef	SNAMES
+#undef	XMBRTOWC
+#undef	ZAPSTATE
 
 /* macros for manipulating states, large version */
 #define	states	char *
-#define	CLEAR(v)	memset(v, 0, (size_t)m->g->nstates)
+#define	CLEAR(v)	memset(v, 0, m->g->nstates)
 #define	SET0(v, n)	((v)[n] = 0)
 #define	SET1(v, n)	((v)[n] = 1)
 #define	ISSET(v, n)	((v)[n])
-#define	ASSIGN(d, s)	memcpy(d, s, (size_t)m->g->nstates)
-#define	EQ(a, b)	(memcmp(a, b, (size_t)m->g->nstates) == 0)
-#define	STATEVARS	int vn; char *space
-#define	STATESETUP(m, nv) \
-    if (((m)->space = malloc((size_t)((nv)*(m)->g->nstates))) == NULL) \
-	return(REG_ESPACE); \
-    else \
-	(m)->vn = 0
-
-#define	STATETEARDOWN(m)	{ free((m)->space); m->space = NULL; }
-#define	SETUP(v)	((v) = &m->space[(size_t)(m->vn++ * m->g->nstates)])
-#define	onestate	int
-#define	INIT(o, n)	((o) = (int)(n))
+#define	ASSIGN(d, s)	memcpy(d, s, m->g->nstates)
+#define	EQ(a, b)	(memcmp(a, b, m->g->nstates) == 0)
+#define	STATEVARS	long vn; char *space
+#define	STATESETUP(m, nv)	{ (m)->space = malloc((nv)*(m)->g->nstates); \
+				if ((m)->space == NULL) return(REG_ESPACE); \
+				(m)->vn = 0; }
+#define	STATETEARDOWN(m)	{ free((m)->space); }
+#define	SETUP(v)	((v) = &m->space[m->vn++ * m->g->nstates])
+#define	onestate	long
+#define	INIT(o, n)	((o) = (n))
 #define	INC(o)	((o)++)
 #define	ISSTATEIN(v, o)	((v)[o])
 /* some abbreviations; note that some of these know variable names! */
@@ -179,11 +189,24 @@
 #define	FWD(dst, src, n)	((dst)[here+(n)] |= (src)[here])
 #define	BACK(dst, src, n)	((dst)[here-(n)] |= (src)[here])
 #define	ISSETBACK(v, n)	((v)[here - (n)])
+/* no multibyte support */
+#define	XMBRTOWC	xmbrtowc_dummy
+#define	ZAPSTATE(mbs)	((void)(mbs))
 /* function names */
 #define	LNAMES			/* flag */
 
 #include "engine.c"
 
+/* multibyte character & large states version */
+#undef	LNAMES
+#undef	XMBRTOWC
+#undef	ZAPSTATE
+#define	XMBRTOWC	xmbrtowc
+#define	ZAPSTATE(mbs)	memset((mbs), 0, sizeof(*(mbs)))
+#define	MNAMES
+
+#include "engine.c"
+
 /*
  - regexec - interface for matching
  = extern int regexec(const regex_t *, const char *, size_t, \
@@ -200,21 +223,18 @@
  * have been prototyped.
  */
 int				/* 0 success, REG_NOMATCH failure */
-regexec(
-    const regex_t *preg,
-    const char *string,
-    size_t nmatch,
-    regmatch_t pmatch[],
-    int eflags)
+regexec(const regex_t * __restrict preg,
+	const char * __restrict string,
+	size_t nmatch,
+	regmatch_t pmatch[__restrict],
+	int eflags)
 {
 	struct re_guts *g = preg->re_g;
-	char *s;
 #ifdef REDEBUG
 #	define	GOODFLAGS(f)	(f)
 #else
 #	define	GOODFLAGS(f)	((f)&(REG_NOTBOL|REG_NOTEOL|REG_STARTEND))
 #endif
-
 	_DIAGASSERT(preg != NULL);
 	_DIAGASSERT(string != NULL);
 
@@ -225,10 +245,10 @@
 		return(REG_BADPAT);
 	eflags = GOODFLAGS(eflags);
 
-	s = __UNCONST(string);
-
-	if (g->nstates <= (sopno)(CHAR_BIT*sizeof(states1)) && !(eflags&REG_LARGE))
-		return(smatcher(g, s, nmatch, pmatch, eflags));
+	if (MB_CUR_MAX > 1)
+		return(mmatcher(g, string, nmatch, pmatch, eflags));
+	else if (g->nstates <= CHAR_BIT*sizeof(states1) && !(eflags&REG_LARGE))
+		return(smatcher(g, string, nmatch, pmatch, eflags));
 	else
-		return(lmatcher(g, s, nmatch, pmatch, eflags));
+		return(lmatcher(g, string, nmatch, pmatch, eflags));
 }
diff --git a/libc/upstream-netbsd/lib/libc/regex/regfree.c b/libc/upstream-netbsd/lib/libc/regex/regfree.c
index ce011ea..7e388b1 100644
--- a/libc/upstream-netbsd/lib/libc/regex/regfree.c
+++ b/libc/upstream-netbsd/lib/libc/regex/regfree.c
@@ -1,6 +1,9 @@
-/*	$NetBSD: regfree.c,v 1.15 2007/02/09 23:44:18 junyoung Exp $	*/
+/*	$NetBSD: regfree.c,v 1.19 2021/02/26 19:24:47 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -34,58 +37,22 @@
  *	@(#)regfree.c	8.3 (Berkeley) 3/20/94
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)regfree.c	8.3 (Berkeley) 3/20/94
- */
+#if HAVE_NBTOOL_CONFIG_H
+#include "nbtool_config.h"
+#endif
 
 #include <sys/cdefs.h>
-#if defined(LIBC_SCCS) && !defined(lint)
 #if 0
 static char sccsid[] = "@(#)regfree.c	8.3 (Berkeley) 3/20/94";
-#else
-__RCSID("$NetBSD: regfree.c,v 1.15 2007/02/09 23:44:18 junyoung Exp $");
+__FBSDID("$FreeBSD: head/lib/libc/regex/regfree.c 326025 2017-11-20 19:49:47Z pfg $");
 #endif
-#endif /* LIBC_SCCS and not lint */
+__RCSID("$NetBSD: regfree.c,v 1.19 2021/02/26 19:24:47 christos Exp $");
 
 #include "namespace.h"
 #include <sys/types.h>
-
-#include <assert.h>
 #include <stdio.h>
 #include <stdlib.h>
+#include <limits.h>
 #include <regex.h>
 
 #ifdef __weak_alias
@@ -100,10 +67,10 @@
  = extern void regfree(regex_t *);
  */
 void
-regfree(
-    regex_t *preg)
+regfree(regex_t *preg)
 {
 	struct re_guts *g;
+	unsigned int i;
 
 	_DIAGASSERT(preg != NULL);
 
@@ -119,11 +86,19 @@
 
 	if (g->strip != NULL)
 		free(g->strip);
-	if (g->sets != NULL)
+	if (g->sets != NULL) {
+		for (i = 0; i < g->ncsets; i++) {
+			free(g->sets[i].ranges);
+			free(g->sets[i].wides);
+			free(g->sets[i].types);
+		}
 		free(g->sets);
-	if (g->setbits != NULL)
-		free(g->setbits);
+	}
 	if (g->must != NULL)
 		free(g->must);
+	if (g->charjump != NULL)
+		free(&g->charjump[CHAR_MIN]);
+	if (g->matchjump != NULL)
+		free(g->matchjump);
 	free(g);
 }
diff --git a/libc/upstream-netbsd/lib/libc/regex/utils.h b/libc/upstream-netbsd/lib/libc/regex/utils.h
index 762caee..972f555 100644
--- a/libc/upstream-netbsd/lib/libc/regex/utils.h
+++ b/libc/upstream-netbsd/lib/libc/regex/utils.h
@@ -1,6 +1,9 @@
-/*	$NetBSD: utils.h,v 1.6 2003/08/07 16:43:21 agc Exp $	*/
+/*	$NetBSD: utils.h,v 1.9 2021/04/22 19:20:24 christos Exp $	*/
 
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ * Copyright (c) 1992, 1993, 1994 Henry Spencer.
  * Copyright (c) 1992, 1993, 1994
  *	The Regents of the University of California.  All rights reserved.
  *
@@ -32,49 +35,38 @@
  * SUCH DAMAGE.
  *
  *	@(#)utils.h	8.3 (Berkeley) 3/20/94
+ * $FreeBSD: head/lib/libc/regex/utils.h 341838 2018-12-12 04:23:00Z yuripv $
  */
 
-/*-
- * Copyright (c) 1992, 1993, 1994 Henry Spencer.
- *
- * This code is derived from software contributed to Berkeley by
- * Henry Spencer.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)utils.h	8.3 (Berkeley) 3/20/94
- */
+#ifdef NLS
+#include <wchar.h>
+#include <wctype.h>
+#else
+#include <ctype.h>
+#define wint_t regex_wint_t
+#define mbstate_t regex_mbstate_t
+#define wctype_t regex_wctype_t
+typedef short wint_t;
+typedef char mbstate_t;
+typedef short wctype_t;
+#define iswupper(a) isupper(a)
+#define iswlower(a) islower(a)
+#define iswalpha(a) isalpha(a)
+#define iswalnum(a) isalnum(a)
+#define towupper(a) toupper(a)
+#define towlower(a) tolower(a)
+extern wctype_t __regex_wctype(const char *);
+extern int __regex_iswctype(wint_t, wctype_t);
+#define wctype(s) __regex_wctype(s)
+#define iswctype(c, t) __regex_iswctype((c), (t))
+#endif
 
 /* utility definitions */
 #define	DUPMAX		_POSIX2_RE_DUP_MAX	/* xxx is this right? */
 #define	INFINITY	(DUPMAX + 1)
-#define	NC		(CHAR_MAX - CHAR_MIN + 1)
+
+#define	NC_MAX		(CHAR_MAX - CHAR_MIN + 1)
+#define	NC		((MB_CUR_MAX) == 1 ? (NC_MAX) : (128))
 typedef unsigned char uch;
 
 /* switch off assertions (if not already off) if no REDEBUG */
diff --git a/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c b/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c
index 2b0e0d8..e48fe85 100644
--- a/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c
+++ b/libc/upstream-netbsd/lib/libc/stdlib/bsearch.c
@@ -1,4 +1,4 @@
-/*	$NetBSD: bsearch.c,v 1.15 2012/03/04 20:01:45 christos Exp $	*/
+/*	$NetBSD: bsearch.c,v 1.16 2022/05/31 08:43:14 andvar Exp $	*/
 
 /*
  * Copyright (c) 1990, 1993
@@ -34,7 +34,7 @@
 #if 0
 static char sccsid[] = "@(#)bsearch.c	8.1 (Berkeley) 6/4/93";
 #else
-__RCSID("$NetBSD: bsearch.c,v 1.15 2012/03/04 20:01:45 christos Exp $");
+__RCSID("$NetBSD: bsearch.c,v 1.16 2022/05/31 08:43:14 andvar Exp $");
 #endif
 #endif /* LIBC_SCCS and not lint */
 
@@ -50,7 +50,7 @@
  * is odd, moving left simply involves halving lim: e.g., when lim
  * is 5 we look at item 2, so we change lim to 2 so that we will
  * look at items 0 & 1.  If lim is even, the same applies.  If lim
- * is odd, moving right again involes halving lim, this time moving
+ * is odd, moving right again involves halving lim, this time moving
  * the base up one item past p: e.g., when lim is 5 we change base
  * to item 3 and make lim 2 so that we will look at items 3 and 4.
  * If lim is even, however, we have to shrink it by one before
diff --git a/libfdtrack/fdtrack.cpp b/libfdtrack/fdtrack.cpp
index 2d114f2..b064401 100644
--- a/libfdtrack/fdtrack.cpp
+++ b/libfdtrack/fdtrack.cpp
@@ -71,7 +71,11 @@
 static constexpr size_t kStackDepth = 32;
 
 // Skip any initial frames from libfdtrack.so.
-static std::vector<std::string> kSkipFdtrackLib [[clang::no_destroy]] = {"libfdtrack.so"};
+// Also ignore frames from ART (http://b/236197847) because we'd rather spend
+// our precious few frames on the actual Java calling code rather than the
+// implementation of JNI!
+static std::vector<std::string> kSkipFdtrackLib
+    [[clang::no_destroy]] = {"libfdtrack.so", "libart.so"};
 
 static bool installed = false;
 static std::array<FdEntry, kFdTableSize> stack_traces [[clang::no_destroy]];
diff --git a/libm/Android.bp b/libm/Android.bp
index 8024fbe..3e271fa 100644
--- a/libm/Android.bp
+++ b/libm/Android.bp
@@ -29,6 +29,7 @@
 
     whole_static_libs: ["libarm-optimized-routines-math"],
 
+    tidy_disabled_srcs: ["upstream-*/**/*.c"],
     srcs: [
         "upstream-freebsd/lib/msun/bsdsrc/b_tgamma.c",
         "upstream-freebsd/lib/msun/src/catrig.c",
@@ -346,10 +347,33 @@
             ],
 
             exclude_srcs: [
+                // TODO: do the rest when our clang has https://reviews.llvm.org/D136508.
+                // TODO: "upstream-freebsd/lib/msun/src/s_ceil.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_ceilf.c",
+                "upstream-freebsd/lib/msun/src/s_copysign.c",
+                "upstream-freebsd/lib/msun/src/s_copysignf.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_floor.c",
+                // TODO: "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",
+                "upstream-freebsd/lib/msun/src/s_fminf.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_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",
+                // TODO: "upstream-freebsd/lib/msun/src/s_rint.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_rintf.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_round.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_roundf.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_trunc.c",
+                // TODO: "upstream-freebsd/lib/msun/src/s_truncf.c",
             ],
             version_script: ":libm.riscv64.map",
         },
@@ -361,57 +385,24 @@
                 "x86/ceilf.S",
                 "x86/floor.S",
                 "x86/floorf.S",
+                "x86/lrint.S",
+                "x86/lrintf.S",
                 "x86/rint.S",
                 "x86/rintf.S",
                 "x86/sqrt.S",
                 "x86/sqrtf.S",
                 "x86/trunc.S",
                 "x86/truncf.S",
-                "x86/e_acos.S",
-                "x86/e_asin.S",
-                "x86/e_atan2.S",
-                "x86/e_cosh.S",
-                "x86/e_hypot.S",
-                "x86/e_log10.S",
-                "x86/e_sinh.S",
-                "x86/libm_reduce_pi04l.S",
-                "x86/libm_sincos_huge.S",
-                "x86/libm_tancot_huge.S",
-                "x86/lrint.S",
-                "x86/lrintf.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",
             ],
             exclude_srcs: [
-                "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_hypot.c",
-                "upstream-freebsd/lib/msun/src/e_log10.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_expm1.c",
                 "upstream-freebsd/lib/msun/src/s_floor.c",
                 "upstream-freebsd/lib/msun/src/s_floorf.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",
             ],
@@ -428,56 +419,26 @@
                 "x86_64/ceilf.S",
                 "x86_64/floor.S",
                 "x86_64/floorf.S",
+                "x86_64/lrint.S",
+                "x86_64/lrintf.S",
                 "x86_64/rint.S",
                 "x86_64/rintf.S",
                 "x86_64/sqrt.S",
                 "x86_64/sqrtf.S",
                 "x86_64/trunc.S",
                 "x86_64/truncf.S",
-                "x86_64/e_acos.S",
-                "x86_64/e_asin.S",
-                "x86_64/e_atan2.S",
-                "x86_64/e_cosh.S",
-                "x86_64/e_hypot.S",
-                "x86_64/e_log10.S",
-                "x86_64/e_sinh.S",
-                "x86_64/lrint.S",
-                "x86_64/lrintf.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",
             ],
             exclude_srcs: [
-                "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_hypot.c",
-                "upstream-freebsd/lib/msun/src/e_log10.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_expm1.c",
                 "upstream-freebsd/lib/msun/src/s_floor.c",
                 "upstream-freebsd/lib/msun/src/s_floorf.c",
-                "upstream-freebsd/lib/msun/src/s_log1p.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",
-                "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",
             ],
diff --git a/libm/builtins.cpp b/libm/builtins.cpp
index 7487323..58cd81d 100644
--- a/libm/builtins.cpp
+++ b/libm/builtins.cpp
@@ -18,43 +18,26 @@
 
 #include "fpmath.h"
 
-double fabs(double x) {
-#if __arm__
-  // Both Clang and GCC insist on moving r0/r1 into a double register
-  // and using fabs where bit-twiddling would be a better choice.
-  // They get fabsf right, but we need to be careful in fabsl too.
-  IEEEd2bits u;
-  u.d = x;
-  u.bits.sign = 0;
-  return u.d;
-#else
-  return __builtin_fabs(x);
-#endif
-}
-
-float fabsf(float x) {
-  return __builtin_fabsf(x);
-}
-
-#if defined(__LP64__)
+double fabs(double x) { return __builtin_fabs(x); }
+float fabsf(float x) { return __builtin_fabsf(x); }
 long double fabsl(long double x) { return __builtin_fabsl(x); }
-#else
-long double fabsl(long double x) {
-  // Don't use __builtin_fabs here because of ARM. (See fabs above.)
-  return fabs(x);
-}
-#endif
 
 #if defined(__aarch64__)
 float ceilf(float x) { return __builtin_ceilf(x); }
 double ceil(double x) { return __builtin_ceil(x); }
+#endif
 
+#if defined(__aarch64__) || defined(__riscv)
 double copysign(double x, double y) { return __builtin_copysign(x, y); }
 float copysignf(float x, float y) { return __builtin_copysignf(x, y); }
+#endif
 
+#if defined(__aarch64__)
 float floorf(float x) { return __builtin_floorf(x); }
 double floor(double x) { return __builtin_floor(x); }
+#endif
 
+#if defined(__aarch64__) || defined(__riscv)
 float fmaf(float x, float y, float z) { return __builtin_fmaf(x, y, z); }
 double fma(double x, double y, double z) { return __builtin_fma(x, y, z); }
 
@@ -68,7 +51,9 @@
 long lroundf(float x) { return __builtin_lroundf(x); }
 long long llround(double x) { return __builtin_llround(x); }
 long long llroundf(float x) { return __builtin_llroundf(x); }
+#endif
 
+#if defined(__aarch64__)
 float rintf(float x) { return __builtin_rintf(x); }
 double rint(double x) { return __builtin_rint(x); }
 
diff --git a/libm/x86/e_acos.S b/libm/x86/e_acos.S
deleted file mode 100644
index 04b1787..0000000
--- a/libm/x86/e_acos.S
+++ /dev/null
@@ -1,1929 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/e_asin.S b/libm/x86/e_asin.S
deleted file mode 100644
index 6a3ff8e..0000000
--- a/libm/x86/e_asin.S
+++ /dev/null
@@ -1,2003 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/e_atan2.S b/libm/x86/e_atan2.S
deleted file mode 100644
index e491396..0000000
--- a/libm/x86/e_atan2.S
+++ /dev/null
@@ -1,1221 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/e_cosh.S b/libm/x86/e_cosh.S
deleted file mode 100644
index 567a9d0..0000000
--- a/libm/x86/e_cosh.S
+++ /dev/null
@@ -1,1349 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/e_hypot.S b/libm/x86/e_hypot.S
deleted file mode 100644
index 8422024..0000000
--- a/libm/x86/e_hypot.S
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/e_log10.S b/libm/x86/e_log10.S
deleted file mode 100644
index 473cea3..0000000
--- a/libm/x86/e_log10.S
+++ /dev/null
@@ -1,795 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/e_sinh.S b/libm/x86/e_sinh.S
deleted file mode 100644
index b9a2930..0000000
--- a/libm/x86/e_sinh.S
+++ /dev/null
@@ -1,1407 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/libm_reduce_pi04l.S b/libm/x86/libm_reduce_pi04l.S
deleted file mode 100644
index 25976ea..0000000
--- a/libm/x86/libm_reduce_pi04l.S
+++ /dev/null
@@ -1,3718 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/libm_sincos_huge.S b/libm/x86/libm_sincos_huge.S
deleted file mode 100644
index 4601b87..0000000
--- a/libm/x86/libm_sincos_huge.S
+++ /dev/null
@@ -1,668 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/libm_tancot_huge.S b/libm/x86/libm_tancot_huge.S
deleted file mode 100644
index cdaa820..0000000
--- a/libm/x86/libm_tancot_huge.S
+++ /dev/null
@@ -1,750 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/s_atan.S b/libm/x86/s_atan.S
deleted file mode 100644
index 71ca4db..0000000
--- a/libm/x86/s_atan.S
+++ /dev/null
@@ -1,934 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/s_cbrt.S b/libm/x86/s_cbrt.S
deleted file mode 100644
index 53d3cc2..0000000
--- a/libm/x86/s_cbrt.S
+++ /dev/null
@@ -1,738 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/s_cos.S b/libm/x86/s_cos.S
deleted file mode 100644
index e47c63e..0000000
--- a/libm/x86/s_cos.S
+++ /dev/null
@@ -1,892 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/s_expm1.S b/libm/x86/s_expm1.S
deleted file mode 100644
index 1816f59..0000000
--- a/libm/x86/s_expm1.S
+++ /dev/null
@@ -1,702 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/s_log1p.S b/libm/x86/s_log1p.S
deleted file mode 100644
index de7b87b..0000000
--- a/libm/x86/s_log1p.S
+++ /dev/null
@@ -1,827 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/s_sin.S b/libm/x86/s_sin.S
deleted file mode 100644
index 74d1b86..0000000
--- a/libm/x86/s_sin.S
+++ /dev/null
@@ -1,907 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/s_tan.S b/libm/x86/s_tan.S
deleted file mode 100644
index 7935efe..0000000
--- a/libm/x86/s_tan.S
+++ /dev/null
@@ -1,1766 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86/s_tanh.S b/libm/x86/s_tanh.S
deleted file mode 100644
index 777519f..0000000
--- a/libm/x86/s_tanh.S
+++ /dev/null
@@ -1,1361 +0,0 @@
-/*
-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, "",@progbits
-# End
diff --git a/libm/x86_64/e_acos.S b/libm/x86_64/e_acos.S
deleted file mode 100644
index 57c910e..0000000
--- a/libm/x86_64/e_acos.S
+++ /dev/null
@@ -1,1957 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index 4242543..0000000
--- a/libm/x86_64/e_asin.S
+++ /dev/null
@@ -1,2036 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index f0ba43c..0000000
--- a/libm/x86_64/e_atan2.S
+++ /dev/null
@@ -1,1242 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index 97cb389..0000000
--- a/libm/x86_64/e_cosh.S
+++ /dev/null
@@ -1,1372 +0,0 @@
-/*
-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, "",@progbits
-// -- 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_hypot.S b/libm/x86_64/e_hypot.S
deleted file mode 100644
index e46669f..0000000
--- a/libm/x86_64/e_hypot.S
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-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, "",@progbits
-// -- 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_log10.S b/libm/x86_64/e_log10.S
deleted file mode 100644
index 86f86ce..0000000
--- a/libm/x86_64/e_log10.S
+++ /dev/null
@@ -1,807 +0,0 @@
-/*
-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, "",@progbits
-// -- 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_sinh.S b/libm/x86_64/e_sinh.S
deleted file mode 100644
index d5f7b16..0000000
--- a/libm/x86_64/e_sinh.S
+++ /dev/null
@@ -1,1430 +0,0 @@
-/*
-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, "",@progbits
-// -- 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/s_atan.S b/libm/x86_64/s_atan.S
deleted file mode 100644
index d0e5d72..0000000
--- a/libm/x86_64/s_atan.S
+++ /dev/null
@@ -1,927 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index 6b00f56..0000000
--- a/libm/x86_64/s_cbrt.S
+++ /dev/null
@@ -1,754 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index 3d9e402..0000000
--- a/libm/x86_64/s_cos.S
+++ /dev/null
@@ -1,1275 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index 4b22f5a..0000000
--- a/libm/x86_64/s_expm1.S
+++ /dev/null
@@ -1,727 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index 27fab74..0000000
--- a/libm/x86_64/s_log1p.S
+++ /dev/null
@@ -1,829 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index fb54a2a..0000000
--- a/libm/x86_64/s_sin.S
+++ /dev/null
@@ -1,1300 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index 4fa12e3..0000000
--- a/libm/x86_64/s_tan.S
+++ /dev/null
@@ -1,2239 +0,0 @@
-/*
-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, "",@progbits
-// -- 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
deleted file mode 100644
index a76a5c2..0000000
--- a/libm/x86_64/s_tanh.S
+++ /dev/null
@@ -1,1392 +0,0 @@
-/*
-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, "",@progbits
-// -- 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/linker/linker.cpp b/linker/linker.cpp
index 9779c8d..6246f8c 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -39,6 +39,7 @@
 #include <sys/vfs.h>
 #include <unistd.h>
 
+#include <iterator>
 #include <new>
 #include <string>
 #include <unordered_map>
@@ -1189,8 +1190,6 @@
   if ((fs_stat.f_type != TMPFS_MAGIC) && (!ns->is_accessible(realpath))) {
     // TODO(dimitry): workaround for http://b/26394120 - the exempt-list
 
-    // TODO(dimitry) before O release: add a namespace attribute to have this enabled
-    // only for classloader-namespaces
     const soinfo* needed_by = task->is_dt_needed() ? task->get_needed_by() : nullptr;
     if (is_exempt_lib(ns, name, needed_by)) {
       // print warning only if needed by non-system library
@@ -2486,11 +2485,12 @@
     return false;
   }
 
-  auto sonames = android::base::Split(shared_lib_sonames, ":");
-  std::unordered_set<std::string> sonames_set(sonames.begin(), sonames.end());
+  std::vector<std::string> sonames = android::base::Split(shared_lib_sonames, ":");
+  std::unordered_set<std::string> sonames_set(std::make_move_iterator(sonames.begin()),
+                                              std::make_move_iterator(sonames.end()));
 
   ProtectedDataGuard guard;
-  namespace_from->add_linked_namespace(namespace_to, sonames_set, false);
+  namespace_from->add_linked_namespace(namespace_to, std::move(sonames_set), false);
 
   return true;
 }
diff --git a/linker/linker_namespaces.h b/linker/linker_namespaces.h
index 6817901..671e0b5 100644
--- a/linker/linker_namespaces.h
+++ b/linker/linker_namespaces.h
@@ -41,11 +41,11 @@
 struct android_namespace_link_t {
  public:
   android_namespace_link_t(android_namespace_t* linked_namespace,
-                           const std::unordered_set<std::string>& shared_lib_sonames,
+                           std::unordered_set<std::string> shared_lib_sonames,
                            bool allow_all_shared_libs)
-      : linked_namespace_(linked_namespace), shared_lib_sonames_(shared_lib_sonames),
-        allow_all_shared_libs_(allow_all_shared_libs)
-  {}
+      : linked_namespace_(linked_namespace),
+        shared_lib_sonames_(std::move(shared_lib_sonames)),
+        allow_all_shared_libs_(allow_all_shared_libs) {}
 
   android_namespace_t* linked_namespace() const {
     return linked_namespace_;
@@ -127,10 +127,10 @@
     return linked_namespaces_;
   }
   void add_linked_namespace(android_namespace_t* linked_namespace,
-                            const std::unordered_set<std::string>& shared_lib_sonames,
+                            std::unordered_set<std::string> shared_lib_sonames,
                             bool allow_all_shared_libs) {
-    linked_namespaces_.push_back(
-        android_namespace_link_t(linked_namespace, shared_lib_sonames, allow_all_shared_libs));
+    linked_namespaces_.emplace_back(linked_namespace, std::move(shared_lib_sonames),
+                                    allow_all_shared_libs);
   }
 
   void add_soinfo(soinfo* si) {
diff --git a/linker/linker_phdr.cpp b/linker/linker_phdr.cpp
index aa1a208..73cfced 100644
--- a/linker/linker_phdr.cpp
+++ b/linker/linker_phdr.cpp
@@ -175,7 +175,8 @@
   if (did_load_) {
     return true;
   }
-  if (ReserveAddressSpace(address_space) && LoadSegments() && FindPhdr() &&
+  bool reserveSuccess = ReserveAddressSpace(address_space);
+  if (reserveSuccess && LoadSegments() && FindPhdr() &&
       FindGnuPropertySection()) {
     did_load_ = true;
 #if defined(__aarch64__)
@@ -186,6 +187,13 @@
     }
 #endif
   }
+  if (reserveSuccess && !did_load_) {
+    if (load_start_ != nullptr && load_size_ != 0) {
+      if (!mapped_by_caller_) {
+        munmap(load_start_, load_size_);
+      }
+    }
+  }
 
   return did_load_;
 }
@@ -216,6 +224,7 @@
   if (em == EM_386) return "EM_386";
   if (em == EM_AARCH64) return "EM_AARCH64";
   if (em == EM_ARM) return "EM_ARM";
+  if (em == EM_RISCV) return "EM_RISCV";
   if (em == EM_X86_64) return "EM_X86_64";
   return "EM_???";
 }
diff --git a/tests/Android.bp b/tests/Android.bp
index 71be058..8c6057f 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -105,6 +105,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-rw_load_segment.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-rw_load_segment.so"],
         },
@@ -128,6 +131,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-unaligned_shdr_offset.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-unaligned_shdr_offset.so"],
         },
@@ -151,6 +157,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shentsize.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shentsize.so"],
         },
@@ -174,6 +183,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shstrndx.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shstrndx.so"],
         },
@@ -197,6 +209,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-empty_shdr_table.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-empty_shdr_table.so"],
         },
@@ -220,6 +235,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_offset.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_offset.so"],
         },
@@ -243,6 +261,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-zero_shdr_table_content.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-zero_shdr_table_content.so"],
         },
@@ -266,6 +287,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels.so"],
         },
@@ -289,6 +313,9 @@
         arm64: {
             srcs: ["prebuilt-elf-files/arm64/libtest_invalid-textrels2.so"],
         },
+        riscv64: {
+            srcs: ["prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so"],
+        },
         x86: {
             srcs: ["prebuilt-elf-files/x86/libtest_invalid-textrels2.so"],
         },
@@ -340,6 +367,9 @@
 cc_test_library {
     name: "libBionicStandardTests",
     defaults: ["bionic_tests_defaults"],
+    tidy_disabled_srcs: [
+        "malloc_test.cpp", // timed out with clang-tidy, and too many warnings
+    ],
     srcs: [
         "__aeabi_read_tp_test.cpp",
         "__cxa_atexit_test.cpp",
diff --git a/tests/__cxa_atexit_test.cpp b/tests/__cxa_atexit_test.cpp
index 6a122d1..9f73261 100644
--- a/tests/__cxa_atexit_test.cpp
+++ b/tests/__cxa_atexit_test.cpp
@@ -26,19 +26,30 @@
  * SUCH DAMAGE.
  */
 
-#include <cxxabi.h>
 #include <gtest/gtest.h>
 
+extern "C" {
+int __cxa_atexit(void (*func)(void*), void* arg, void* dso);
+
+// TODO(b/175635923). __cxa_finalize's return type should actually be "void",
+// but it is declared "int" here instead to be compatible with the declaration
+// in an old version of cxxabi.h, which is included indirectly. The declarations
+// of __cxa_atexit and __cxa_finalize are removed from newer versions of
+// cxxabi.h, so once libc++ is updated, this return type should be changed to
+// "void".
+int __cxa_finalize(void* dso);
+}
+
 TEST(__cxa_atexit, simple) {
   int counter = 0;
 
-  __cxxabiv1::__cxa_atexit([](void* arg) { ++*static_cast<int*>(arg); }, &counter, &counter);
+  __cxa_atexit([](void* arg) { ++*static_cast<int*>(arg); }, &counter, &counter);
 
-  __cxxabiv1::__cxa_finalize(&counter);
+  __cxa_finalize(&counter);
   ASSERT_EQ(counter, 1);
 
   // The handler won't be called twice.
-  __cxxabiv1::__cxa_finalize(&counter);
+  __cxa_finalize(&counter);
   ASSERT_EQ(counter, 1);
 }
 
@@ -54,16 +65,16 @@
   };
 
   for (int i = 0; i < 500; ++i) {
-    __cxxabiv1::__cxa_atexit(append_to_actual, new int{i}, &handles[i % 2]);
+    __cxa_atexit(append_to_actual, new int{i}, &handles[i % 2]);
   }
 
-  __cxxabiv1::__cxa_finalize(&handles[0]);
+  __cxa_finalize(&handles[0]);
 
   for (int i = 500; i < 750; ++i) {
-    __cxxabiv1::__cxa_atexit(append_to_actual, new int{i}, &handles[1]);
+    __cxa_atexit(append_to_actual, new int{i}, &handles[1]);
   }
 
-  __cxxabiv1::__cxa_finalize(&handles[1]);
+  __cxa_finalize(&handles[1]);
 
   std::vector<int> expected;
   for (int i = 498; i >= 0; i -= 2) expected.push_back(i);
diff --git a/tests/__cxa_demangle_test.cpp b/tests/__cxa_demangle_test.cpp
index 4628a61..d400619 100644
--- a/tests/__cxa_demangle_test.cpp
+++ b/tests/__cxa_demangle_test.cpp
@@ -29,11 +29,9 @@
 #include <cxxabi.h>
 #include <gtest/gtest.h>
 
-extern "C" char* __cxa_demangle(const char*, char*, size_t*, int*);
-
 TEST(__cxa_demangle, cxa_demangle_fuzz_152588929) {
 #if defined(__aarch64__)
-  char* p = __cxa_demangle("1\006ILeeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", 0, 0, 0);
+  char* p = abi::__cxa_demangle("1\006ILeeeEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE", 0, 0, 0);
   ASSERT_STREQ("\x6<-0x1.cecececececececececececececep+11983", p);
   free(p);
 #endif
@@ -41,7 +39,7 @@
 
 TEST(__cxa_demangle, DISABLED_cxa_demangle_fuzz_167977068) {
 #if defined(__aarch64__)
-  char* p = __cxa_demangle("DTLeeeeeeeeeeeeeeeeeeeeeeeeeEEEEeeEEEE", 0, 0, 0);
+  char* p = abi::__cxa_demangle("DTLeeeeeeeeeeeeeeeeeeeeeeeeeEEEEeeEEEE", 0, 0, 0);
   ASSERT_EQ(nullptr, p) << p;
   free(p);
 #endif
diff --git a/tests/clang_fortify_tests.cpp b/tests/clang_fortify_tests.cpp
index 40cb83f..544af43 100644
--- a/tests/clang_fortify_tests.cpp
+++ b/tests/clang_fortify_tests.cpp
@@ -387,6 +387,8 @@
 }
 
 static void testStdlib() {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
   char path_buffer[PATH_MAX - 1];
   // expected-warning@+2{{ignoring return value of function}}
   // expected-error@+1{{must be NULL or a pointer to a buffer with >= PATH_MAX bytes}}
@@ -401,6 +403,7 @@
   // expected-warning@+2{{ignoring return value of function}}
   // expected-error@+1{{flipped arguments?}}
   realpath(nullptr, nullptr);
+#pragma clang diagnostic pop
 }
 }  // namespace compilation_tests
 #endif
diff --git a/tests/dlfcn_test.cpp b/tests/dlfcn_test.cpp
index c5d1218..939c092 100644
--- a/tests/dlfcn_test.cpp
+++ b/tests/dlfcn_test.cpp
@@ -1646,6 +1646,9 @@
 }
 
 TEST(dlfcn, dlopen_invalid_local_tls) {
+#if defined(__riscv)
+  // This is a test for bad gold behavior, and gold doesn't support riscv64.
+#else
   const std::string libpath = GetPrebuiltElfDir() + "/libtest_invalid-local-tls.so";
 
   void* handle = dlopen(libpath.c_str(), RTLD_NOW);
@@ -1658,6 +1661,7 @@
   std::string expected_dlerror = std::string("dlopen failed: unexpected TLS reference to ") +
                                  referent + " in \"" + libpath + "\"";
   ASSERT_SUBSTR(expected_dlerror.c_str(), dlerror());
+#endif
 }
 
 TEST(dlfcn, dlopen_df_1_global) {
diff --git a/tests/fcntl_test.cpp b/tests/fcntl_test.cpp
index d50a438..862f498 100644
--- a/tests/fcntl_test.cpp
+++ b/tests/fcntl_test.cpp
@@ -23,6 +23,7 @@
 #include <sys/vfs.h>
 
 #include <android-base/file.h>
+#include <android-base/silent_death_test.h>
 #include <android-base/stringprintf.h>
 
 // Glibc v2.19 doesn't include these in fcntl.h so host builds will fail without.
@@ -33,6 +34,8 @@
 #include <linux/magic.h>
 #endif
 
+using fcntl_DeathTest = SilentDeathTest;
+
 TEST(fcntl, fcntl_smoke) {
   int fd = open("/proc/version", O_RDONLY);
   ASSERT_TRUE(fd != -1);
@@ -356,3 +359,7 @@
   ASSERT_EQ(0, close(fd));
 #endif
 }
+
+TEST(fcntl_DeathTest, fcntl_F_SETFD) {
+  EXPECT_DEATH(fcntl(0, F_SETFD, O_NONBLOCK), "non-FD_CLOEXEC");
+}
diff --git a/tests/heap_tagging_level_test.cpp b/tests/heap_tagging_level_test.cpp
index 96c2ffd..ae678b7 100644
--- a/tests/heap_tagging_level_test.cpp
+++ b/tests/heap_tagging_level_test.cpp
@@ -222,6 +222,7 @@
 
 TEST_P(MemtagNoteTest, SEGV) {
 #if defined(__BIONIC__) && defined(__aarch64__)
+  SKIP_WITH_NATIVE_BRIDGE;  // http://b/242170715
   // Note that we do not check running_with_hwasan() - what matters here is whether the test binary
   // itself is built with HWASan.
   bool withHWASAN = __has_feature(hwaddress_sanitizer);
diff --git a/tests/libs/Android.bp b/tests/libs/Android.bp
index 0c9a2e0..8ae2257 100644
--- a/tests/libs/Android.bp
+++ b/tests/libs/Android.bp
@@ -1661,6 +1661,7 @@
      },
    },
    header_libs: ["bionic_libc_platform_headers"],
+   cflags: ["-fexceptions"],
 }
 
 cc_test {
@@ -1676,6 +1677,7 @@
      },
    },
    header_libs: ["bionic_libc_platform_headers"],
+   cflags: ["-fexceptions"],
 }
 
 cc_genrule {
diff --git a/tests/libs/stack_tagging_helper.cpp b/tests/libs/stack_tagging_helper.cpp
index a239dc1..d29844d 100644
--- a/tests/libs/stack_tagging_helper.cpp
+++ b/tests/libs/stack_tagging_helper.cpp
@@ -260,6 +260,81 @@
   CHECK(memtag_stack);
 }
 
+static uintptr_t GetTag(void* addr) {
+  return reinterpret_cast<uintptr_t>(addr) & (0xFULL << 56);
+}
+
+static uintptr_t GetTag(volatile void* addr) {
+  return GetTag(const_cast<void*>(addr));
+}
+
+static volatile char* throw_frame;
+static volatile char* skip_frame3_frame;
+volatile char *x;
+
+__attribute__((noinline)) void throws() {
+  // Prevent optimization.
+  if (getpid() == 0) return;
+  throw_frame = reinterpret_cast<char*>(__builtin_frame_address(0));
+  throw "error";
+}
+
+__attribute__((noinline)) void maybe_throws() {
+  // These are all unique sizes so in case of a failure, we can see which ones
+  // are not untagged from the tag dump.
+  volatile char y[5 * 16]= {};
+  x = y;
+  // Make sure y is tagged.
+  CHECK(GetTag(&y) != GetTag(__builtin_frame_address(0)));
+  throws();
+}
+
+__attribute__((noinline, no_sanitize("memtag"))) void skip_frame() {
+  volatile char y[6*16] = {};
+  x = y;
+  // Make sure y is not tagged.
+  CHECK(GetTag(&y) == GetTag(__builtin_frame_address(0)));
+  maybe_throws();
+}
+
+__attribute__((noinline)) void skip_frame2() {
+  volatile char y[7*16] = {};
+  x = y;
+  // Make sure y is tagged.
+  CHECK(GetTag(&y) != GetTag(__builtin_frame_address(0)));
+  skip_frame();
+}
+
+__attribute__((noinline, no_sanitize("memtag"))) void skip_frame3() {
+  volatile char y[8*16] = {};
+  x = y;
+  skip_frame3_frame = reinterpret_cast<char*>(__builtin_frame_address(0));
+  // Make sure y is not tagged.
+  CHECK(GetTag(&y) == GetTag(__builtin_frame_address(0)));
+  skip_frame2();
+}
+
+void test_exception_cleanup() {
+  // This is here for debugging purposes, if something goes wrong we can
+  // verify that this placeholder did not get untagged.
+  volatile char placeholder[16*16] = {};
+  x = placeholder;
+  try {
+    skip_frame3();
+  } catch (const char* e) {
+  }
+  if (throw_frame >= skip_frame3_frame) {
+    fprintf(stderr, "invalid throw frame");
+    exit(1);
+  }
+  for (char* b = const_cast<char*>(throw_frame); b < skip_frame3_frame; ++b) {
+    if (mte_get_tag(b) != b) {
+      fprintf(stderr, "invalid tag at %p", b);
+      exit(1);
+    }
+  }
+}
+
 int main(int argc, char** argv) {
   if (argc < 2) {
     printf("nothing to do\n");
@@ -296,6 +371,11 @@
     return 0;
   }
 
+  if (strcmp(argv[1], "exception_cleanup") == 0) {
+    test_exception_cleanup();
+    return 0;
+  }
+
   printf("unrecognized command: %s\n", argv[1]);
   return 1;
 }
diff --git a/tests/memtag_stack_test.cpp b/tests/memtag_stack_test.cpp
index 84ee8d1..97084ec 100644
--- a/tests/memtag_stack_test.cpp
+++ b/tests/memtag_stack_test.cpp
@@ -44,13 +44,13 @@
 #endif
 }
 
-INSTANTIATE_TEST_SUITE_P(, MemtagStackTest,
-                         testing::Combine(testing::Values("vfork_execve", "vfork_execl",
-                                                          "vfork_exit", "longjmp",
-                                                          "longjmp_sigaltstack", "android_mallopt"),
-                                          testing::Bool()),
-                         [](const ::testing::TestParamInfo<MemtagStackTest::ParamType>& info) {
-                           std::string s = std::get<0>(info.param);
-                           if (std::get<1>(info.param)) s += "_static";
-                           return s;
-                         });
+INSTANTIATE_TEST_SUITE_P(
+    , MemtagStackTest,
+    testing::Combine(testing::Values("vfork_execve", "vfork_execl", "vfork_exit", "longjmp",
+                                     "longjmp_sigaltstack", "android_mallopt", "exception_cleanup"),
+                     testing::Bool()),
+    [](const ::testing::TestParamInfo<MemtagStackTest::ParamType>& info) {
+      std::string s = std::get<0>(info.param);
+      if (std::get<1>(info.param)) s += "_static";
+      return s;
+    });
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_empty.so b/tests/prebuilt-elf-files/riscv64/libtest_empty.so
new file mode 100755
index 0000000..f3218f7
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_empty.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so
new file mode 100755
index 0000000..9f15ff9
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-empty_shdr_table.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so
new file mode 100755
index 0000000..32db3b9
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-rw_load_segment.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so
new file mode 100755
index 0000000..5ee9aab
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so
new file mode 100755
index 0000000..664d3df
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-textrels2.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so
new file mode 100755
index 0000000..3e773c0
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-unaligned_shdr_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so
new file mode 100755
index 0000000..d3bcd9a
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_content.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so
new file mode 100755
index 0000000..956dca8
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shdr_table_offset.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so
new file mode 100755
index 0000000..e663dae
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shentsize.so
Binary files differ
diff --git a/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so
new file mode 100755
index 0000000..294f854
--- /dev/null
+++ b/tests/prebuilt-elf-files/riscv64/libtest_invalid-zero_shstrndx.so
Binary files differ
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index 7f7f3db..fa648d2 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -823,9 +823,9 @@
 #endif
 
 TEST(signal, sigset_size) {
-  // The setjmp implementations assume that sigset_t can fit in a
-  // long. This is true because ARM and x86 have broken rt signal support,
-  // and AArch64 and x86_64 both have a SIGRTMAX defined as 64.
+  // The setjmp implementations assume that sigset_t can fit in a long.
+  // This is true because the 32-bit ABIs have broken rt signal support,
+  // but the 64-bit ABIs both have a SIGRTMAX defined as 64.
 #if defined(__BIONIC__)
   static_assert(sizeof(sigset_t) <= sizeof(long), "sigset_t doesn't fit in a long");
 #endif
diff --git a/tests/stdlib_test.cpp b/tests/stdlib_test.cpp
index f507e08..45169e3 100644
--- a/tests/stdlib_test.cpp
+++ b/tests/stdlib_test.cpp
@@ -494,7 +494,10 @@
 TEST(stdlib, system_NULL) {
   // "The system() function shall always return non-zero when command is NULL."
   // http://pubs.opengroup.org/onlinepubs/9699919799/functions/system.html
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
   ASSERT_NE(0, system(nullptr));
+#pragma clang diagnostic pop
 }
 
 // https://austingroupbugs.net/view.php?id=1440
diff --git a/tests/sys_ptrace_test.cpp b/tests/sys_ptrace_test.cpp
index a079ead..b8c1537 100644
--- a/tests/sys_ptrace_test.cpp
+++ b/tests/sys_ptrace_test.cpp
@@ -257,6 +257,9 @@
   asm volatile("stm %0, { r0, r1, r2, r3 }" : : "r"(&data));
 #elif defined(__aarch64__)
   asm volatile("stp x0, x1, %0" : : "m"(data));
+#elif defined(__riscv)
+  UNUSED(data);
+  GTEST_LOG_(INFO) << "missing riscv64 instruction to store > 64 bits in one instruction";
 #endif
 }
 
diff --git a/tests/sys_resource_test.cpp b/tests/sys_resource_test.cpp
index 0247fcb..492fabd 100644
--- a/tests/sys_resource_test.cpp
+++ b/tests/sys_resource_test.cpp
@@ -26,6 +26,7 @@
   ASSERT_NE(sizeof(rlimit), sizeof(rlimit64));
   ASSERT_EQ(4U, sizeof(rlim_t));
 #endif
+  ASSERT_EQ(8U, sizeof(rlim64_t));
 }
 
 class SysResourceTest : public ::testing::Test {
diff --git a/tests/time_test.cpp b/tests/time_test.cpp
index 40e5c6d..f0ad937 100644
--- a/tests/time_test.cpp
+++ b/tests/time_test.cpp
@@ -998,6 +998,10 @@
   ASSERT_EQ(-1, ts.tv_sec);
 }
 
+TEST(time, clock_getres_null_resolution) {
+  ASSERT_EQ(0, clock_getres(CLOCK_REALTIME, nullptr));
+}
+
 TEST(time, clock) {
   // clock(3) is hard to test, but a 1s sleep should cost less than 10ms on average.
   static const clock_t N = 5;
diff --git a/tests/unistd_test.cpp b/tests/unistd_test.cpp
index 5fce5b8..2a36460 100644
--- a/tests/unistd_test.cpp
+++ b/tests/unistd_test.cpp
@@ -294,10 +294,13 @@
 }
 
 TEST(UNISTD_TEST, setenv_EINVAL) {
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wnonnull"
   EXPECT_EQ(-1, setenv(nullptr, "value", 0));
   EXPECT_EQ(EINVAL, errno);
   EXPECT_EQ(-1, setenv(nullptr, "value", 1));
   EXPECT_EQ(EINVAL, errno);
+#pragma clang diagnostic pop
   EXPECT_EQ(-1, setenv("", "value", 0));
   EXPECT_EQ(EINVAL, errno);
   EXPECT_EQ(-1, setenv("", "value", 1));