Merge "Test for ns_parserr() and got a heap-buffer-overflow"
diff --git a/android-changes-for-ndk-developers.md b/android-changes-for-ndk-developers.md
index 4bd97a0..84456f9 100644
--- a/android-changes-for-ndk-developers.md
+++ b/android-changes-for-ndk-developers.md
@@ -1,8 +1,11 @@
-# Android changes for NDK developers
+# Android linker changes for NDK developers
 
 This document details important changes related to native code
 loading in various Android releases.
 
+See also [bionic status](docs/status.md) for general libc/libm/libdl
+behavior changes.
+
 Required tools: the NDK has an _arch_-linux-android-readelf binary
 (e.g. arm-linux-androideabi-readelf or i686-linux-android-readelf)
 for each architecture (under toolchains/), but you can use readelf for
@@ -46,6 +49,10 @@
 [ReLinker](https://github.com/KeepSafe/ReLinker) which claims to solve
 these problems automatically.
 
+Alternatively, if you don't have too many dependencies, it can be easiest to
+simply link all of your code into one big library and sidestep the details of
+library and symbol lookup changes on all past (and future) Android versions.
+
 ## Changes to library search order
 
 We have made various fixes to library search order when resolving symbols.
diff --git a/docs/native_allocator.md b/docs/native_allocator.md
index 97c3648..82a98fe 100644
--- a/docs/native_allocator.md
+++ b/docs/native_allocator.md
@@ -10,7 +10,7 @@
 It is important to note that there are two modes for a native allocator
 to run in on Android. The first is the normal allocator, the second is
 called the svelte config, which is designed to run on memory constrained
-systems and be a bit slower, but take less PSS. To enable the svelte config,
+systems and be a bit slower, but take less RSS. To enable the svelte config,
 add this line to the `BoardConfig.mk` for the given target:
 
     MALLOC_SVELTE := true
@@ -55,7 +55,7 @@
 When set to zero, `mallopt(M_DECAY_TIME, 0)`, it is expected that an
 allocator will attempt to purge and release any unused memory back to the
 kernel on free calls. This is important in Android to avoid consuming extra
-PSS.
+RSS.
 
 When set to non-zero, `mallopt(M_DECAY_TIME, 1)`, an allocator can delay the
 purge and release action. The amount of delay is up to the allocator
@@ -65,13 +65,13 @@
 The drawback to this option is that most allocators do not have a separate
 thread to handle the purge, so the decay is only handled when an
 allocation operation occurs. For server processes, this can mean that
-PSS is slightly higher when the server is waiting for the next connection
+RSS is slightly higher when the server is waiting for the next connection
 and no other allocation calls are made. The `M_PURGE` option is used to
 force a purge in this case.
 
 For all applications on Android, the call `mallopt(M_DECAY_TIME, 1)` is
 made by default. The idea is that it allows application frees to run a
-bit faster, while only increasing PSS a bit.
+bit faster, while only increasing RSS a bit.
 
 #### M\_PURGE
 When called, `mallopt(M_PURGE, 0)`, an allocator should purge and release
@@ -115,7 +115,7 @@
 ## Performance
 There are multiple different ways to evaluate the performance of a native
 allocator on Android. One is allocation speed in various different scenarios,
-anoher is total PSS taken by the allocator.
+another is total RSS taken by the allocator.
 
 The last is virtual address space consumed in 32 bit applications. There is
 a limited amount of address space available in 32 bit apps, and there have
@@ -129,7 +129,7 @@
     mmma -j bionic/benchmarks
 
 These benchmarks are only used to verify the speed of the allocator and
-ignore anything related to PSS and virtual address space consumed.
+ignore anything related to RSS and virtual address space consumed.
 
 #### Allocate/Free Benchmarks
 These are the benchmarks to verify the allocation speed of a loop doing a
@@ -228,7 +228,7 @@
 These numbers should be as performant as the current allocator.
 
 ### Memory Trace Benchmarks
-These benchmarks measure all three axes of a native allocator, PSS, virtual
+These benchmarks measure all three axes of a native allocator, RSS, virtual
 address space consumed, speed of allocation. They are designed to
 run on a trace of the allocations from a real world application or system
 process.
@@ -248,7 +248,7 @@
     /data/benchmarktest/trace_benchmark/trace_benchmark
 
 #### Memory Replay Benchmarks
-These benchmarks display PSS, virtual memory consumed (VA space), and do a
+These benchmarks display RSS, virtual memory consumed (VA space), and do a
 bit of performance testing on actual traces taken from running applications.
 
 The trace data includes what thread does each operation, so the replay
@@ -266,21 +266,21 @@
 To run these benchmarks, first copy the trace files to the target and
 unzip them using these commands:
 
-    adb shell push system/extras/dumps /data/local/tmp
-    adb shell 'cd /data/local/tmp/dumps && for name in *.zip; do unzip $name; done'
+    adb shell push system/extras/traces /data/local/tmp
+    adb shell 'cd /data/local/tmp/traces && for name in *.zip; do unzip $name; done'
 
 Since all of the traces come from applications, the `memory_replay` program
 will always call `mallopt(M_DECAY_TIME, 1)' before running the trace.
 
 Run the benchmark thusly:
 
-    adb shell memory_replay64 /data/local/tmp/dumps/XXX.txt
-    adb shell memory_replay32 /data/local/tmp/dumps/XXX.txt
+    adb shell memory_replay64 /data/local/tmp/traces/XXX.txt
+    adb shell memory_replay32 /data/local/tmp/traces/XXX.txt
 
 Where XXX.txt is the name of a trace file.
 
-Every 100000 allocation operations, a dump of the PSS and VA space will be
-performed. At the end, a final PSS and VA space number will be printed.
+Every 100000 allocation operations, a dump of the RSS and VA space will be
+performed. At the end, a final RSS and VA space number will be printed.
 For the most part, the intermediate data can be ignored, but it is always
 a good idea to look over the data to verify that no strange spikes are
 occurring.
@@ -304,6 +304,14 @@
 executable, the virtual address space consumed is not much larger than the
 current allocator. A small increase (on the order of a few MBs) would be okay.
 
+There is no specific benchmark for memory fragmentation, instead, the RSS
+when running the memory traces acts as a proxy for this. An allocator that
+is fragmenting badly will show an increase in RSS. The best trace for
+tracking fragmentation is system\_server.txt which is an extremely long
+trace (~13 million operations). The total number of live allocations goes
+up and down a bit, but stays mostly the same so an allocator that fragments
+badly would likely show an abnormal increase in RSS on this trace.
+
 NOTE: When a native allocator calls mmap, it is expected that the allocator
 will name the map using the call:
 
diff --git a/docs/status.md b/docs/status.md
index 5c2f2e8..6968a18 100644
--- a/docs/status.md
+++ b/docs/status.md
@@ -1,5 +1,11 @@
 # Android bionic status
 
+This document details libc/libm/libdl additions and behavior changes.
+
+See also
+[Android linker changes for NDK developers](../android-changes-for-ndk-developers.md)
+for changes related to native code loading in various Android releases.
+
 ## Bionic function availability
 
 ### POSIX
@@ -39,6 +45,9 @@
 
 New libc functions in R (API level 30):
   * Full C11 `<threads.h>` (available as inlines for older API levels).
+  * `memfd_create` and `mlock2` (GNU extensions).
+  * `renameat2` (GNU extension).
+  * `pthread_cond_clockwait`/`pthread_mutex_clocklock`/`pthread_rwlock_clockrdlock`/`pthread_rwlock_clockwrlock`/`sem_clockwait`
 
 New libc functions in Q (API level 29):
   * `timespec_get` (C11 `<time.h>` addition)
diff --git a/libc/Android.bp b/libc/Android.bp
index 71d4d4a..e505c67 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -1133,7 +1133,6 @@
         "bionic/sigprocmask.cpp",
         "bionic/spawn.cpp",
         "bionic/stat.cpp",
-        "bionic/statvfs.cpp",
         "bionic/stdlib_l.cpp",
         "bionic/strchrnul.cpp",
         "bionic/strerror.cpp",
@@ -1150,6 +1149,8 @@
         "bionic/sys_sem.cpp",
         "bionic/sys_shm.cpp",
         "bionic/sys_signalfd.cpp",
+        "bionic/sys_statfs.cpp",
+        "bionic/sys_statvfs.cpp",
         "bionic/sys_time.cpp",
         "bionic/sysinfo.cpp",
         "bionic/syslog.cpp",
diff --git a/libc/SECCOMP_WHITELIST_COMMON.TXT b/libc/SECCOMP_WHITELIST_COMMON.TXT
index 43e7d1c..07f84a8 100644
--- a/libc/SECCOMP_WHITELIST_COMMON.TXT
+++ b/libc/SECCOMP_WHITELIST_COMMON.TXT
@@ -64,21 +64,45 @@
 int stat64:stat64(const char*, struct stat64*)  arm,x86
 ssize_t readlink:readlink(const char*, char*, size_t)  arm,x86,x86_64
 
-# Probed for and conditionally used by ART.
-int membarrier(int cmd, int flags) all
-
+#
 # Useful new syscalls which we don't yet use in bionic.
-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 memfd_create(const char* name, unsigned int flags) all
-int renameat2(int olddirfd, const char* oldpath, int newdirfd, const char* newpath, unsigned int flags)  all
-int execveat(int dirfd, const char* pathname, char* const* argv, char* const* envp, int flags)  all
-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
-int mlock2(const void* addr, size_t len, int flags) all
-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 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
+# 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
+# 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
+# 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 4.11, glibc 2.30.
+int statx(int, const char*, int, unsigned int, statx*) all
+# Since Linux 5.1, not in glibc.
+int clock_gettime64(clockid_t, timespec64*) lp32
+int clock_settime64(clockid_t, const timespec64*) lp32
+int clock_adjtime64(clockid_t, timex64*) lp32
+int clock_getres_time64(clockid_t, timespec64*) lp32
+int clock_nanosleep_time64(clockid_t, int, const timespec64*, timespec*) lp32
+int timer_gettime64(__kernel_timer_t, itimerspec64*) lp32
+int timer_settime64(__kernel_timer_t, int, const itimerspec64*, itimerspec64*) lp32
+int timerfd_gettime64(int, itimerspec64*) lp32
+int timerfd_settime64(int, int, const itimerspec64*, itimerspec64*) lp32
+int utimensat_time64(int, const char*, const timespec64[2], int) lp32
+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/SYSCALLS.TXT b/libc/SYSCALLS.TXT
index 99bdc93..21ebdbd 100644
--- a/libc/SYSCALLS.TXT
+++ b/libc/SYSCALLS.TXT
@@ -107,12 +107,14 @@
 
 int         __close:close(int)  all
 pid_t       __getpid:getpid()  all
+int memfd_create(const char*, unsigned) all
 int         munmap(void*, size_t)  all
 void*       __mremap:mremap(void*, size_t, size_t, int, void*)  all
 int         msync(const void*, size_t, int)    all
 int         mprotect(const void*, size_t, int)  all
 int         madvise(void*, size_t, int)  all
-int         mlock(const void* addr, size_t len)    all
+int mlock(const void* addr, size_t len)    all
+int mlock2(const void* addr, size_t len, int flags)    all
 int         munlock(const void* addr, size_t len)   all
 int         mlockall(int flags)   all
 int         munlockall()   all
@@ -151,6 +153,7 @@
 int mknodat(int, const char*, mode_t, dev_t)  all
 int readlinkat(int, const char*, char*, size_t)  all
 int renameat(int, const char*, int, const char*)  all
+int renameat2(int, const char*, int, const char*, unsigned)  all
 int symlinkat(const char*, int, const char*)  all
 int unlinkat(int, const char*, int)   all
 int utimensat(int, const char*, const struct timespec times[2], int)  all
diff --git a/libc/arch-common/bionic/__dso_handle_so.h b/libc/arch-common/bionic/__dso_handle_so.h
index e2c26b6..2c0df7b 100644
--- a/libc/arch-common/bionic/__dso_handle_so.h
+++ b/libc/arch-common/bionic/__dso_handle_so.h
@@ -26,4 +26,14 @@
  * SUCH DAMAGE.
  */
 
-__attribute__((__visibility__("hidden"))) void* __dso_handle = &__dso_handle;
+/*
+ * We would like __dso_handle to be:
+ *   1. A const so that if a DSO does not have any RW data, .data section can
+ *      be omitted.
+ *   2. Of type void* so that no awkward type conversion is needed when
+ *      &__dso_handle is passed to various functions, which all expect a void*.
+ * To achieve both, we do the following aliasing trick.
+ */
+static const void* const __dso_handle_const = &__dso_handle_const;
+__attribute__((__visibility__("hidden")))
+__attribute__((alias("__dso_handle_const"))) extern void* __dso_handle;
diff --git a/libc/bionic/__cxa_guard.cpp b/libc/bionic/__cxa_guard.cpp
index 30b5f41..e2e7477 100644
--- a/libc/bionic/__cxa_guard.cpp
+++ b/libc/bionic/__cxa_guard.cpp
@@ -16,9 +16,7 @@
 
 #include <endian.h>
 #include <limits.h>
-#undef _USING_LIBCXX  // Prevent using of <atomic>.
 #include <stdatomic.h>
-
 #include <stddef.h>
 
 #include "private/bionic_futex.h"
diff --git a/libc/bionic/dl_iterate_phdr_static.cpp b/libc/bionic/dl_iterate_phdr_static.cpp
index bbce1fc..7b44810 100644
--- a/libc/bionic/dl_iterate_phdr_static.cpp
+++ b/libc/bionic/dl_iterate_phdr_static.cpp
@@ -32,6 +32,10 @@
 #include <sys/types.h>
 #include <link.h>
 
+#include "private/bionic_elf_tls.h"
+#include "private/bionic_globals.h"
+#include "pthread_internal.h"
+
 /* ld provides this to us in the default link script */
 extern "C" void* __executable_start;
 
@@ -52,6 +56,21 @@
   exe_info.dlpi_name = NULL;
   exe_info.dlpi_phdr = reinterpret_cast<ElfW(Phdr)*>(reinterpret_cast<uintptr_t>(ehdr) + ehdr->e_phoff);
   exe_info.dlpi_phnum = ehdr->e_phnum;
+  exe_info.dlpi_adds = 0;
+  exe_info.dlpi_subs = 0;
+
+  const TlsModules& tls_modules = __libc_shared_globals()->tls_modules;
+  if (tls_modules.module_count == 0) {
+    exe_info.dlpi_tls_modid = 0;
+    exe_info.dlpi_tls_data = nullptr;
+  } else {
+    const size_t kExeModuleId = 1;
+    const StaticTlsLayout& layout = __libc_shared_globals()->static_tls_layout;
+    const TlsModule& tls_module = tls_modules.module_table[__tls_module_id_to_idx(kExeModuleId)];
+    char* static_tls = reinterpret_cast<char*>(__get_bionic_tcb()) - layout.offset_bionic_tcb();
+    exe_info.dlpi_tls_modid = kExeModuleId;
+    exe_info.dlpi_tls_data = static_tls + tls_module.static_offset;
+  }
 
   // Try the executable first.
   int rc = cb(&exe_info, sizeof(exe_info), data);
@@ -71,6 +90,10 @@
   vdso_info.dlpi_name = NULL;
   vdso_info.dlpi_phdr = reinterpret_cast<ElfW(Phdr)*>(reinterpret_cast<char*>(ehdr_vdso) + ehdr_vdso->e_phoff);
   vdso_info.dlpi_phnum = ehdr_vdso->e_phnum;
+  vdso_info.dlpi_adds = 0;
+  vdso_info.dlpi_subs = 0;
+  vdso_info.dlpi_tls_modid = 0;
+  vdso_info.dlpi_tls_data = nullptr;
   for (size_t i = 0; i < vdso_info.dlpi_phnum; ++i) {
     if (vdso_info.dlpi_phdr[i].p_type == PT_LOAD) {
       vdso_info.dlpi_addr = (ElfW(Addr)) ehdr_vdso - vdso_info.dlpi_phdr[i].p_vaddr;
diff --git a/libc/bionic/fdsan.cpp b/libc/bionic/fdsan.cpp
index dd3a96e..4ebc796 100644
--- a/libc/bionic/fdsan.cpp
+++ b/libc/bionic/fdsan.cpp
@@ -106,30 +106,8 @@
 }
 
 void __libc_init_fdsan() {
-  constexpr auto default_level = ANDROID_FDSAN_ERROR_LEVEL_WARN_ONCE;
-  const prop_info* pi = __system_property_find(kFdsanPropertyName);
-  if (!pi) {
-    android_fdsan_set_error_level(default_level);
-    return;
-  }
-  __system_property_read_callback(
-      pi,
-      [](void*, const char*, const char* value, uint32_t) {
-        if (strcasecmp(value, "1") == 0 || strcasecmp(value, "fatal") == 0) {
-          android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_FATAL);
-        } else if (strcasecmp(value, "warn") == 0) {
-          android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_WARN_ALWAYS);
-        } else if (strcasecmp(value, "warn_once") == 0) {
-          android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_WARN_ONCE);
-        } else {
-          if (strlen(value) != 0 && strcasecmp(value, "0") != 0) {
-            async_safe_format_log(ANDROID_LOG_ERROR, "libc",
-                                  "debug.fdsan set to unknown value '%s', disabling", value);
-          }
-          android_fdsan_set_error_level(default_level);
-        }
-      },
-      nullptr);
+  constexpr auto default_level = ANDROID_FDSAN_ERROR_LEVEL_FATAL;
+  android_fdsan_set_error_level_from_property(default_level);
 }
 
 static FdTable& GetFdTable() {
@@ -355,6 +333,45 @@
   return atomic_exchange(&GetFdTable().error_level, new_level);
 }
 
+android_fdsan_error_level android_fdsan_set_error_level_from_property(
+    android_fdsan_error_level default_level) {
+  const prop_info* pi = __system_property_find(kFdsanPropertyName);
+  if (!pi) {
+    return android_fdsan_set_error_level(default_level);
+  }
+
+  struct callback_data {
+    android_fdsan_error_level default_value;
+    android_fdsan_error_level result;
+  };
+
+  callback_data data;
+  data.default_value = default_level;
+
+  __system_property_read_callback(
+      pi,
+      [](void* arg, const char*, const char* value, uint32_t) {
+        callback_data* data = static_cast<callback_data*>(arg);
+
+        if (strcasecmp(value, "1") == 0 || strcasecmp(value, "fatal") == 0) {
+          data->result = android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_FATAL);
+        } else if (strcasecmp(value, "warn") == 0) {
+          data->result = android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_WARN_ALWAYS);
+        } else if (strcasecmp(value, "warn_once") == 0) {
+          data->result = android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_WARN_ONCE);
+        } else {
+          if (strlen(value) != 0 && strcasecmp(value, "0") != 0) {
+            async_safe_format_log(ANDROID_LOG_ERROR, "libc",
+                                  "debug.fdsan set to unknown value '%s', disabling", value);
+          }
+          data->result = android_fdsan_set_error_level(data->default_value);
+        }
+      },
+      &data);
+
+  return data.result;
+}
+
 int close(int fd) {
   int rc = android_fdsan_close_with_tag(fd, 0);
   if (rc == -1 && errno == EINTR) {
diff --git a/libc/bionic/fortify.cpp b/libc/bionic/fortify.cpp
index cf37666..3b804b0 100644
--- a/libc/bionic/fortify.cpp
+++ b/libc/bionic/fortify.cpp
@@ -249,7 +249,7 @@
 // This is a variant of __stpncpy_chk, but it also checks to make
 // sure we don't read beyond the end of "src". The code for this is
 // based on the original version of stpncpy, but modified to check
-// how much we read from "src" at the end of the copy operation.
+// how much we read from "src" during the copy operation.
 char* __stpncpy_chk2(char* dst, const char* src, size_t n, size_t dst_len, size_t src_len) {
   __check_buffer_access("stpncpy", "write into", n, dst_len);
   if (n != 0) {
@@ -257,6 +257,11 @@
     const char* s = src;
 
     do {
+      size_t s_copy_len = static_cast<size_t>(s - src);
+      if (__predict_false(s_copy_len >= src_len)) {
+        __fortify_fatal("stpncpy: detected read past end of %zu-byte buffer", src_len);
+      }
+
       if ((*d++ = *s++) == 0) {
         // NUL pad the remaining n-1 bytes.
         while (--n != 0) {
@@ -265,11 +270,6 @@
         break;
       }
     } while (--n != 0);
-
-    size_t s_copy_len = static_cast<size_t>(s - src);
-    if (__predict_false(s_copy_len > src_len)) {
-      __fortify_fatal("stpncpy: detected read past end of %zu-byte buffer", src_len);
-    }
   }
 
   return dst;
@@ -360,7 +360,7 @@
 // This is a variant of __strncpy_chk, but it also checks to make
 // sure we don't read beyond the end of "src". The code for this is
 // based on the original version of strncpy, but modified to check
-// how much we read from "src" at the end of the copy operation.
+// how much we read from "src" during the copy operation.
 char* __strncpy_chk2(char* dst, const char* src, size_t n, size_t dst_len, size_t src_len) {
   __check_buffer_access("strncpy", "write into", n, dst_len);
   if (n != 0) {
@@ -368,6 +368,11 @@
     const char* s = src;
 
     do {
+      size_t s_copy_len = static_cast<size_t>(s - src);
+      if (__predict_false(s_copy_len >= src_len)) {
+        __fortify_fatal("strncpy: detected read past end of %zu-byte buffer", src_len);
+      }
+
       if ((*d++ = *s++) == 0) {
         // NUL pad the remaining n-1 bytes.
         while (--n != 0) {
@@ -376,11 +381,6 @@
         break;
       }
     } while (--n != 0);
-
-    size_t s_copy_len = static_cast<size_t>(s - src);
-    if (__predict_false(s_copy_len > src_len)) {
-      __fortify_fatal("strncpy: detected read past end of %zu-byte buffer", src_len);
-    }
   }
 
   return dst;
diff --git a/libc/bionic/libc_init_dynamic.cpp b/libc/bionic/libc_init_dynamic.cpp
index 4f3b4f7..d6d5552 100644
--- a/libc/bionic/libc_init_dynamic.cpp
+++ b/libc/bionic/libc_init_dynamic.cpp
@@ -69,6 +69,13 @@
 __LIBC_HIDDEN__ void* __libc_sysinfo = reinterpret_cast<void*>(__libc_int0x80);
 #endif
 
+extern "C" __attribute__((weak)) void __hwasan_library_loaded(ElfW(Addr) base,
+                                                              const ElfW(Phdr)* phdr,
+                                                              ElfW(Half) phnum);
+extern "C" __attribute__((weak)) void __hwasan_library_unloaded(ElfW(Addr) base,
+                                                                const ElfW(Phdr)* phdr,
+                                                                ElfW(Half) phnum);
+
 // We need a helper function for __libc_preinit because compiling with LTO may
 // inline functions requiring a stack protector check, but __stack_chk_guard is
 // not initialized at the start of __libc_preinit. __libc_preinit_impl will run
@@ -91,6 +98,14 @@
 
   // Hooks for various libraries to let them know that we're starting up.
   __libc_globals.mutate(__libc_init_malloc);
+
+#if __has_feature(hwaddress_sanitizer)
+  // Notify the HWASan runtime library whenever a library is loaded or unloaded
+  // so that it can update its shadow memory.
+  __libc_shared_globals()->load_hook = __hwasan_library_loaded;
+  __libc_shared_globals()->unload_hook = __hwasan_library_unloaded;
+#endif
+
   netdClientInit();
 }
 
diff --git a/libc/bionic/ndk_cruft.cpp b/libc/bionic/ndk_cruft.cpp
index f0a7026..2c3299f 100644
--- a/libc/bionic/ndk_cruft.cpp
+++ b/libc/bionic/ndk_cruft.cpp
@@ -243,23 +243,15 @@
   return signal(signum, handler);
 }
 
-// bcopy/bzero were previously `#define`d, so we only have `static` wrappers in
-// Bionic headers. Since we have header definitions, we need some way to
-// overload these implementations; __never_call will ensure that any calls to
-// bcopy/bzero call the in-header implementation. Since the implementations
-// should end up functionally identical, it doesn't matter which we actually
-// call.
-#define __never_call __attribute__((enable_if(false, "never selected")))
-
 // This was removed from POSIX 2008.
-void bcopy(const void* src, void* dst, size_t n) __never_call __RENAME(bcopy);
-void bcopy(const void* src, void* dst, size_t n) __never_call {
+#undef bcopy
+void bcopy(const void* src, void* dst, size_t n) {
   memmove(dst, src, n);
 }
 
 // This was removed from POSIX 2008.
-void bzero(void* dst, size_t n) __never_call __RENAME(bzero);
-void bzero(void* dst, size_t n) __never_call {
+#undef bzero
+void bzero(void* dst, size_t n) {
   memset(dst, 0, n);
 }
 
diff --git a/libc/bionic/statvfs.cpp b/libc/bionic/statvfs.cpp
deleted file mode 100644
index cd825eb..0000000
--- a/libc/bionic/statvfs.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2013 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <sys/statvfs.h>
-
-#include <sys/statfs.h>
-
-// Paper over the fact that 32-bit kernels use fstatfs64/statfs64 with an extra argument,
-// but 64-bit kernels don't have the "64" bit suffix or the extra size_t argument.
-#if defined(__LP64__)
-extern "C" int __fstatfs(int, struct statfs*);
-extern "C" int __statfs(const char*, struct statfs*);
-#  define __fstatfs64(fd,size,buf) __fstatfs(fd,buf)
-#  define __statfs64(path,size,buf) __statfs(path,buf)
-#else
-extern "C" int __fstatfs64(int, size_t, struct statfs*);
-extern "C" int __statfs64(const char*, size_t, struct statfs*);
-#endif
-
-// The kernel sets a private ST_VALID flag to signal to the C library whether the
-// f_flags field is valid. This flag should not be exposed to users of the C library.
-#define ST_VALID 0x0020
-
-static void __statfs_to_statvfs(const struct statfs& in, struct statvfs* out) {
-  out->f_bsize = in.f_bsize;
-  out->f_frsize = in.f_frsize;
-  out->f_blocks = in.f_blocks;
-  out->f_bfree = in.f_bfree;
-  out->f_bavail = in.f_bavail;
-  out->f_files = in.f_files;
-  out->f_ffree = in.f_ffree;
-  out->f_favail = in.f_ffree;
-  out->f_fsid = in.f_fsid.__val[0] | (static_cast<uint64_t>(in.f_fsid.__val[1]) << 32);
-  out->f_flag = in.f_flags;
-  out->f_namemax = in.f_namelen;
-}
-
-int fstatfs(int fd, struct statfs* result) {
-  int rc = __fstatfs64(fd, sizeof(*result), result);
-  if (rc != 0) {
-    return rc;
-  }
-  result->f_flags &= ~ST_VALID;
-  return 0;
-}
-__strong_alias(fstatfs64, fstatfs);
-
-int statfs(const char* path, struct statfs* result) {
-  int rc = __statfs64(path, sizeof(*result), result);
-  if (rc != 0) {
-    return rc;
-  }
-  result->f_flags &= ~ST_VALID;
-  return 0;
-}
-__strong_alias(statfs64, statfs);
-
-int statvfs(const char* path, struct statvfs* result) {
-  struct statfs tmp;
-  int rc = statfs(path, &tmp);
-  if (rc != 0) {
-    return rc;
-  }
-  __statfs_to_statvfs(tmp, result);
-  return 0;
-}
-__strong_alias(statvfs64, statvfs);
-
-int fstatvfs(int fd, struct statvfs* result) {
-  struct statfs tmp;
-  int rc = fstatfs(fd, &tmp);
-  if (rc != 0) {
-    return rc;
-  }
-  __statfs_to_statvfs(tmp, result);
-  return 0;
-}
-__strong_alias(fstatvfs64, fstatvfs);
diff --git a/libc/bionic/sys_statfs.cpp b/libc/bionic/sys_statfs.cpp
new file mode 100644
index 0000000..d78de2d
--- /dev/null
+++ b/libc/bionic/sys_statfs.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <sys/statfs.h>
+
+// Paper over the fact that 32-bit kernels use fstatfs64/statfs64 with
+// an extra argument, but 64-bit kernels don't have the "64" bit suffix or
+// the extra size_t argument.
+#if defined(__LP64__)
+extern "C" int __fstatfs(int, struct statfs*);
+extern "C" int __statfs(const char*, struct statfs*);
+#  define __fstatfs64(fd,size,buf) __fstatfs(fd,buf)
+#  define __statfs64(path,size,buf) __statfs(path,buf)
+#else
+extern "C" int __fstatfs64(int, size_t, struct statfs*);
+extern "C" int __statfs64(const char*, size_t, struct statfs*);
+#endif
+
+// The kernel sets a private ST_VALID flag to signal to the C library
+// whether the f_flags field is valid. This flag should not be exposed to
+// users of the C library.
+#define ST_VALID 0x0020
+
+int fstatfs(int fd, struct statfs* result) {
+  int rc = __fstatfs64(fd, sizeof(*result), result);
+  if (rc != 0) {
+    return rc;
+  }
+  result->f_flags &= ~ST_VALID;
+  return 0;
+}
+__strong_alias(fstatfs64, fstatfs);
+
+int statfs(const char* path, struct statfs* result) {
+  int rc = __statfs64(path, sizeof(*result), result);
+  if (rc != 0) {
+    return rc;
+  }
+  result->f_flags &= ~ST_VALID;
+  return 0;
+}
+__strong_alias(statfs64, statfs);
diff --git a/libc/bionic/sys_statvfs.cpp b/libc/bionic/sys_statvfs.cpp
new file mode 100644
index 0000000..ef5dc57
--- /dev/null
+++ b/libc/bionic/sys_statvfs.cpp
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <sys/statvfs.h>
+
+// libc++ uses statvfs (for Darwin compatibility), but on Linux statvfs is
+// just another name for statfs, so it didn't arrive until API level 19. We
+// make the implementation available as inlines to support std::filesystem
+// for NDK users (see https://github.com/android-ndk/ndk/issues/609).
+
+#define __BIONIC_SYS_STATVFS_INLINE /* Out of line. */
+#define __BIONIC_NEED_STATVFS_INLINES
+#undef __BIONIC_NEED_STATVFS64_INLINES
+#include <bits/sys_statvfs_inlines.h>
+
+// Historically we provided actual symbols for statvfs64 and fstatvfs64.
+// They're not particularly useful, but we can't take them away.
+__strong_alias(statvfs64, statvfs);
+__strong_alias(fstatvfs64, fstatvfs);
diff --git a/libc/include/android/fdsan.h b/libc/include/android/fdsan.h
index 1169ed0..83b9318 100644
--- a/libc/include/android/fdsan.h
+++ b/libc/include/android/fdsan.h
@@ -197,4 +197,8 @@
  */
 enum android_fdsan_error_level android_fdsan_set_error_level(enum android_fdsan_error_level new_level) __INTRODUCED_IN(29) __attribute__((__weak__));
 
+/*
+ * Set the error level to the global setting if available, or a default value.
+ */
+enum android_fdsan_error_level android_fdsan_set_error_level_from_property(enum android_fdsan_error_level default_level) __INTRODUCED_IN(30) __attribute__((__weak__));
 __END_DECLS
diff --git a/libc/include/android/legacy_sys_statvfs_inlines.h b/libc/include/android/legacy_sys_statvfs_inlines.h
new file mode 100644
index 0000000..369e6a2
--- /dev/null
+++ b/libc/include/android/legacy_sys_statvfs_inlines.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+#pragma once
+
+/**
+ * @file legacy_sys_statvfs_inlines.h
+ * @brief Inline definitions of statvfs/fstatvfs for old API levels.
+ */
+
+#include <sys/cdefs.h>
+
+#if __ANDROID_API__ < 21
+
+#define __BIONIC_NEED_STATVFS64_INLINES
+#if __ANDROID_API__ < 19
+#define __BIONIC_NEED_STATVFS_INLINES
+#endif
+
+#define __BIONIC_SYS_STATVFS_INLINE static __inline
+#include <bits/sys_statvfs_inlines.h>
+
+#endif
diff --git a/libc/include/bits/fortify/strings.h b/libc/include/bits/fortify/strings.h
index 6bda295..385cf77 100644
--- a/libc/include/bits/fortify/strings.h
+++ b/libc/include/bits/fortify/strings.h
@@ -30,7 +30,7 @@
 
 #if __ANDROID_API__ >= __ANDROID_API_J_MR1__
 __BIONIC_FORTIFY_INLINE
-void bcopy(const void *src, void* const dst __pass_object_size0, size_t len)
+void __bionic_bcopy(const void *src, void* const dst __pass_object_size0, size_t len)
         __overloadable
         __clang_error_if(__bos_unevaluated_lt(__bos0(dst), len),
                          "'bcopy' called with size bigger than buffer") {
@@ -43,7 +43,7 @@
 }
 
 __BIONIC_FORTIFY_INLINE
-void bzero(void* const b __pass_object_size0, size_t len)
+void __bionic_bzero(void* const b __pass_object_size0, size_t len)
         __overloadable
         __clang_error_if(__bos_unevaluated_lt(__bos0(b), len),
                          "'bzero' called with size bigger than buffer") {
diff --git a/libc/include/bits/sys_statvfs_inlines.h b/libc/include/bits/sys_statvfs_inlines.h
new file mode 100644
index 0000000..fd4578c
--- /dev/null
+++ b/libc/include/bits/sys_statvfs_inlines.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+
+#pragma once
+
+#include <sys/cdefs.h>
+#include <sys/statfs.h>
+#include <sys/statvfs.h>
+
+#if defined(__BIONIC_SYS_STATVFS_INLINE)
+
+__BEGIN_DECLS
+
+#if defined(__BIONIC_NEED_STATVFS_INLINES)
+
+static __inline void __bionic_statfs_to_statvfs(const struct statfs* __in,
+                                                struct statvfs* __out) {
+  __out->f_bsize = __in->f_bsize;
+  __out->f_frsize = __in->f_frsize;
+  __out->f_blocks = __in->f_blocks;
+  __out->f_bfree = __in->f_bfree;
+  __out->f_bavail = __in->f_bavail;
+  __out->f_files = __in->f_files;
+  __out->f_ffree = __in->f_ffree;
+  __out->f_favail = __in->f_ffree;
+  __out->f_fsid = __in->f_fsid.__val[0] |
+      __BIONIC_CAST(static_cast, uint64_t, __in->f_fsid.__val[1]) << 32;
+  __out->f_flag = __in->f_flags;
+  __out->f_namemax = __in->f_namelen;
+}
+
+__BIONIC_SYS_STATVFS_INLINE int statvfs(const char* __path,
+                                        struct statvfs* __result) {
+  struct statfs __tmp;
+  int __rc = statfs(__path, &__tmp);
+  if (__rc != 0) return __rc;
+  __bionic_statfs_to_statvfs(&__tmp, __result);
+  return 0;
+}
+
+__BIONIC_SYS_STATVFS_INLINE int fstatvfs(int __fd,
+                                         struct statvfs* __result) {
+  struct statfs __tmp;
+  int __rc = fstatfs(__fd, &__tmp);
+  if (__rc != 0) return __rc;
+  __bionic_statfs_to_statvfs(&__tmp, __result);
+  return 0;
+}
+
+#endif
+
+#if defined(__BIONIC_NEED_STATVFS64_INLINES)
+
+__BIONIC_SYS_STATVFS_INLINE int statvfs64(const char* __path,
+                                          struct statvfs64* __result) {
+  return statvfs(__path, __BIONIC_CAST(reinterpret_cast, struct statvfs*,
+                                       __result));
+}
+
+__BIONIC_SYS_STATVFS_INLINE int fstatvfs64(int __fd,
+                                          struct statvfs64* __result) {
+  return fstatvfs(__fd, __BIONIC_CAST(reinterpret_cast, struct statvfs*,
+                                      __result));
+}
+
+#endif
+
+__END_DECLS
+
+#endif
diff --git a/libc/include/bits/threads_inlines.h b/libc/include/bits/threads_inlines.h
index 1130b3a..8f2beb0 100644
--- a/libc/include/bits/threads_inlines.h
+++ b/libc/include/bits/threads_inlines.h
@@ -34,9 +34,7 @@
 #include <sched.h>
 #include <stdlib.h>
 
-#if !defined(__BIONIC_THREADS_INLINE)
-#define __BIONIC_THREADS_INLINE static __inline
-#endif
+#if defined(__BIONIC_THREADS_INLINE)
 
 __BEGIN_DECLS
 
@@ -105,10 +103,12 @@
   return __bionic_thrd_error(pthread_mutex_lock(__mtx));
 }
 
+#if __ANDROID_API__ >= __ANDROID_API_L__
 __BIONIC_THREADS_INLINE int mtx_timedlock(mtx_t* __mtx,
                                           const struct timespec* __timeout) {
   return __bionic_thrd_error(pthread_mutex_timedlock(__mtx, __timeout));
 }
+#endif
 
 __BIONIC_THREADS_INLINE int mtx_trylock(mtx_t* __mtx) {
   return __bionic_thrd_error(pthread_mutex_trylock(__mtx));
@@ -205,3 +205,5 @@
 }
 
 __END_DECLS
+
+#endif  // __BIONIC_THREADS_INLINE
diff --git a/libc/include/bits/timespec.h b/libc/include/bits/timespec.h
index 0497cfe..daad03f 100644
--- a/libc/include/bits/timespec.h
+++ b/libc/include/bits/timespec.h
@@ -46,7 +46,7 @@
 struct timespec {
   /** Number of seconds. */
   time_t tv_sec;
-  /** Number of nanoseconds. Must be less than 1,000,000. */
+  /** Number of nanoseconds. Must be less than 1,000,000,000. */
   long tv_nsec;
 };
 #endif
diff --git a/libc/include/link.h b/libc/include/link.h
index 072f093..bd430f5 100644
--- a/libc/include/link.h
+++ b/libc/include/link.h
@@ -47,6 +47,12 @@
   const char* dlpi_name;
   const ElfW(Phdr)* dlpi_phdr;
   ElfW(Half) dlpi_phnum;
+
+  // These fields were added in Android R.
+  unsigned long long dlpi_adds;
+  unsigned long long dlpi_subs;
+  size_t dlpi_tls_modid;
+  void* dlpi_tls_data;
 };
 
 #if defined(__arm__)
diff --git a/libc/include/paths.h b/libc/include/paths.h
index 58540d9..0aa4d93 100644
--- a/libc/include/paths.h
+++ b/libc/include/paths.h
@@ -47,7 +47,7 @@
 #define _PATH_CONSOLE "/dev/console"
 
 /** Default shell search path. */
-#define _PATH_DEFPATH "/product/bin:/apex/com.android.runtime/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin"
+#define _PATH_DEFPATH "/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin"
 
 /** Path to the directory containing device files. */
 #define _PATH_DEV "/dev/"
diff --git a/libc/include/stdio.h b/libc/include/stdio.h
index 8bd690f..6632c01 100644
--- a/libc/include/stdio.h
+++ b/libc/include/stdio.h
@@ -165,9 +165,53 @@
 char* tempnam(const char* __dir, const char* __prefix)
     __warnattr("tempnam is unsafe, use mkstemp or tmpfile instead");
 
+/**
+ * [rename(2)](http://man7.org/linux/man-pages/man2/rename.2.html) changes
+ * the name or location of a file.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int rename(const char* __old_path, const char* __new_path);
+
+/**
+ * [renameat(2)](http://man7.org/linux/man-pages/man2/renameat.2.html) changes
+ * the name or location of a file, interpreting relative paths using an fd.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int renameat(int __old_dir_fd, const char* __old_path, int __new_dir_fd, const char* __new_path);
 
+#if defined(__USE_GNU)
+
+/**
+ * Flag for [renameat2(2)](http://man7.org/linux/man-pages/man2/renameat2.2.html)
+ * to fail if the new path already exists.
+ */
+#define RENAME_NOREPLACE (1<<0)
+
+/**
+ * Flag for [renameat2(2)](http://man7.org/linux/man-pages/man2/renameat2.2.html)
+ * to atomically exchange the two paths.
+ */
+#define RENAME_EXCHANGE (1<<1)
+
+/**
+ * Flag for [renameat2(2)](http://man7.org/linux/man-pages/man2/renameat2.2.html)
+ * to create a union/overlay filesystem object.
+ */
+#define RENAME_WHITEOUT (1<<2)
+
+/**
+ * [renameat2(2)](http://man7.org/linux/man-pages/man2/renameat2.2.html) changes
+ * the name or location of a file, interpreting relative paths using an fd,
+ * with optional `RENAME_` flags.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
+int renameat2(int __old_dir_fd, const char* __old_path, int __new_dir_fd, const char* __new_path, unsigned __flags) __INTRODUCED_IN(30);
+
+#endif
+
 int fseek(FILE* __fp, long __offset, int __whence);
 long ftell(FILE* __fp);
 
diff --git a/libc/include/strings.h b/libc/include/strings.h
index a054aed..d6ee1c8 100644
--- a/libc/include/strings.h
+++ b/libc/include/strings.h
@@ -52,12 +52,14 @@
 __BEGIN_DECLS
 
 /** Deprecated. Use memmove() instead. */
-static __inline__ __always_inline void bcopy(const void* b1, void* b2, size_t len) {
+#define bcopy(b1, b2, len) __bionic_bcopy((b1), (b2), (len))
+static __inline__ __always_inline void __bionic_bcopy(const void* b1, void* b2, size_t len) {
   __builtin_memmove(b2, b1, len);
 }
 
 /** Deprecated. Use memset() instead. */
-static __inline__ __always_inline void bzero(void* b, size_t len) {
+#define bzero(b, len) __bionic_bzero((b), (len))
+static __inline__ __always_inline void __bionic_bzero(void* b, size_t len) {
   __builtin_memset(b, 0, len);
 }
 
diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h
index dceb116..689b650 100644
--- a/libc/include/sys/cdefs.h
+++ b/libc/include/sys/cdefs.h
@@ -361,3 +361,6 @@
 
 #include <android/versioning.h>
 #include <android/api-level.h>
+#if __has_include(<android/ndk-version.h>)
+#include <android/ndk-version.h>
+#endif
diff --git a/libc/include/sys/eventfd.h b/libc/include/sys/eventfd.h
index 85f9877..1b6ad29 100644
--- a/libc/include/sys/eventfd.h
+++ b/libc/include/sys/eventfd.h
@@ -38,6 +38,8 @@
 
 __BEGIN_DECLS
 
+/** The eventfd() flag to provide semaphore-like semantics for reads. */
+#define EFD_SEMAPHORE (1 << 0)
 /** The eventfd() flag for a close-on-exec file descriptor. */
 #define EFD_CLOEXEC O_CLOEXEC
 /** The eventfd() flag for a non-blocking file descriptor. */
diff --git a/libc/include/sys/mman.h b/libc/include/sys/mman.h
index 89d6d07..3b83229 100644
--- a/libc/include/sys/mman.h
+++ b/libc/include/sys/mman.h
@@ -26,34 +26,27 @@
  * SUCH DAMAGE.
  */
 
-#ifndef _SYS_MMAN_H_
-#define _SYS_MMAN_H_
+#pragma once
 
 #include <sys/cdefs.h>
 #include <sys/types.h>
+#include <linux/memfd.h>
 #include <linux/mman.h>
 
 __BEGIN_DECLS
 
-#ifndef MAP_ANON
-#define MAP_ANON  MAP_ANONYMOUS
-#endif
+/** Alternative spelling of the `MAP_ANONYMOUS` flag for mmap(). */
+#define MAP_ANON MAP_ANONYMOUS
 
+/** Return value for mmap(). */
 #define MAP_FAILED __BIONIC_CAST(reinterpret_cast, void*, -1)
 
-#define MREMAP_MAYMOVE  1
-#define MREMAP_FIXED    2
-
-/*
- * See https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
+/**
+ * [mmap(2)](http://man7.org/linux/man-pages/man2/mmap.2.html)
+ * creates a memory mapping for the given range.
  *
- * mmap64 wasn't really around until L, but we added an inline for it since it
- * allows a lot more code to compile with _FILE_OFFSET_BITS=64.
- *
- * GCC removes the static inline unless it is explicitly used. We can get around
- * this with __attribute__((used)), but that needlessly adds a definition of
- * mmap64 to every translation unit that includes this header. Instead, just
- * preserve the old behavior for GCC and emit a useful diagnostic.
+ * Returns the address of the mapping on success,
+ * and returns `MAP_FAILED` and sets `errno` on failure.
  */
 #if defined(__USE_FILE_OFFSET64)
 void* mmap(void* __addr, size_t __size, int __prot, int __flags, int __fd, off_t __offset) __RENAME(mmap64);
@@ -62,25 +55,126 @@
 #endif
 
 #if __ANDROID_API__ >= __ANDROID_API_L__
+/**
+ * mmap64() is a variant of mmap() that takes a 64-bit offset even on LP32.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
+ *
+ * mmap64 wasn't really around until L, but we added an inline for it since it
+ * allows a lot more code to compile with _FILE_OFFSET_BITS=64.
+ */
 void* mmap64(void* __addr, size_t __size, int __prot, int __flags, int __fd, off64_t __offset) __INTRODUCED_IN(21);
 #endif
 
+/**
+ * [munmap(2)](http://man7.org/linux/man-pages/man2/munmap.2.html)
+ * deletes a memory mapping for the given range.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int munmap(void* __addr, size_t __size);
+
+/**
+ * [msync(2)](http://man7.org/linux/man-pages/man2/msync.2.html)
+ * flushes changes to a memory-mapped file to disk.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int msync(void* __addr, size_t __size, int __flags);
+
+/**
+ * [mprotect(2)](http://man7.org/linux/man-pages/man2/mprotect.2.html)
+ * sets the protection on a memory region.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int mprotect(void* __addr, size_t __size, int __prot);
+
+/** Flag for mremap(). */
+#define MREMAP_MAYMOVE  1
+
+/** Flag for mremap(). */
+#define MREMAP_FIXED    2
+
+/**
+ * [mremap(2)](http://man7.org/linux/man-pages/man2/mremap.2.html)
+ * expands or shrinks an existing memory mapping.
+ *
+ * Returns the address of the mapping on success,
+ * and returns `MAP_FAILED` and sets `errno` on failure.
+ */
 void* mremap(void* __old_addr, size_t __old_size, size_t __new_size, int __flags, ...);
 
+/**
+ * [mlockall(2)](http://man7.org/linux/man-pages/man2/mlockall.2.html)
+ * locks pages (preventing swapping).
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int mlockall(int __flags) __INTRODUCED_IN(17);
+
+/**
+ * [munlockall(2)](http://man7.org/linux/man-pages/man2/munlockall.2.html)
+ * unlocks pages (allowing swapping).
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int munlockall(void) __INTRODUCED_IN(17);
 
+/**
+ * [mlock(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
+ * locks pages (preventing swapping).
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int mlock(const void* __addr, size_t __size);
+
+/**
+ * [mlock2(2)](http://man7.org/linux/man-pages/man2/mlock.2.html)
+ * locks pages (preventing swapping), with optional flags.
+ *
+ * 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);
+
+/**
+ * [munlock(2)](http://man7.org/linux/man-pages/man2/munlock.2.html)
+ * unlocks pages (allowing swapping).
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int munlock(const void* __addr, size_t __size);
 
+/**
+ * [mincore(2)](http://man7.org/linux/man-pages/man2/mincore.2.html)
+ * tests whether pages are resident in memory.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int mincore(void* __addr, size_t __size, unsigned char* __vector);
 
+/**
+ * [madvise(2)](http://man7.org/linux/man-pages/man2/madvise.2.html)
+ * gives the kernel advice about future usage patterns.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int madvise(void* __addr, size_t __size, int __advice);
 
+#if defined(__USE_GNU)
+
+/**
+ * [memfd_create(2)](http://man7.org/linux/man-pages/man2/memfd_create.2.html)
+ * creates an anonymous file.
+ *
+ * Returns an fd on success, and returns -1 and sets `errno` on failure.
+ */
+int memfd_create(const char* __name, unsigned __flags) __INTRODUCED_IN(30);
+
+#endif
+
 #if __ANDROID_API__ >= __ANDROID_API_M__
+
 /*
  * Some third-party code uses the existence of POSIX_MADV_NORMAL to detect the
  * availability of posix_madvise. This is not correct, since having up-to-date
@@ -89,16 +183,30 @@
  *
  * https://github.com/android-ndk/ndk/issues/395
  */
+
+/** Flag for posix_madvise(). */
 #define POSIX_MADV_NORMAL     MADV_NORMAL
+/** Flag for posix_madvise(). */
 #define POSIX_MADV_RANDOM     MADV_RANDOM
+/** Flag for posix_madvise(). */
 #define POSIX_MADV_SEQUENTIAL MADV_SEQUENTIAL
+/** Flag for posix_madvise(). */
 #define POSIX_MADV_WILLNEED   MADV_WILLNEED
+/** Flag for posix_madvise(). */
 #define POSIX_MADV_DONTNEED   MADV_DONTNEED
+
 #endif
+
+/**
+ * [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.
+ *
+ * See also madvise() which has been available much longer.
+ */
 int posix_madvise(void* __addr, size_t __size, int __advice) __INTRODUCED_IN(23);
 
 __END_DECLS
 
 #include <android/legacy_sys_mman_inlines.h>
-
-#endif
diff --git a/libc/include/sys/statvfs.h b/libc/include/sys/statvfs.h
index e60cadc..93fa3d7 100644
--- a/libc/include/sys/statvfs.h
+++ b/libc/include/sys/statvfs.h
@@ -14,8 +14,12 @@
  * limitations under the License.
  */
 
-#ifndef _SYS_STATVFS_H_
-#define _SYS_STATVFS_H_
+#pragma once
+
+/**
+ * @file sys/statvfs.h
+ * @brief Filesystem statistics.
+ */
 
 #include <stdint.h>
 #include <sys/cdefs.h>
@@ -23,47 +27,123 @@
 
 __BEGIN_DECLS
 
-#ifdef __LP64__
-#define __STATVFS64_RESERVED uint32_t __f_reserved[6];
-#else
-#define __STATVFS64_RESERVED
+struct statvfs {
+  /** Block size. */
+  unsigned long f_bsize;
+  /** Fragment size. */
+  unsigned long f_frsize;
+  /** Total size of filesystem in `f_frsize` blocks. */
+  fsblkcnt_t f_blocks;
+  /** Number of free blocks. */
+  fsblkcnt_t f_bfree;
+  /** Number of free blocks for non-root. */
+  fsblkcnt_t f_bavail;
+  /** Number of inodes. */
+  fsfilcnt_t f_files;
+  /** Number of free inodes. */
+  fsfilcnt_t f_ffree;
+  /** Number of free inodes for non-root. */
+  fsfilcnt_t f_favail;
+  /** Filesystem id. */
+  unsigned long f_fsid;
+  /** Mount flags. (See `ST_` constants.) */
+  unsigned long f_flag;
+  /** Maximum filename length. */
+  unsigned long f_namemax;
+
+#if defined(__LP64__)
+  uint32_t __f_reserved[6];
 #endif
+};
 
-#define __STATVFS64_BODY \
-  unsigned long f_bsize; \
-  unsigned long f_frsize; \
-  fsblkcnt_t    f_blocks; \
-  fsblkcnt_t    f_bfree; \
-  fsblkcnt_t    f_bavail; \
-  fsfilcnt_t    f_files; \
-  fsfilcnt_t    f_ffree; \
-  fsfilcnt_t    f_favail; \
-  unsigned long f_fsid; \
-  unsigned long f_flag; \
-  unsigned long f_namemax; \
-  __STATVFS64_RESERVED
+struct statvfs64 {
+  /** Block size. */
+  unsigned long f_bsize;
+  /** Fragment size. */
+  unsigned long f_frsize;
+  /** Total size of filesystem in `f_frsize` blocks. */
+  fsblkcnt_t f_blocks;
+  /** Number of free blocks. */
+  fsblkcnt_t f_bfree;
+  /** Number of free blocks for non-root. */
+  fsblkcnt_t f_bavail;
+  /** Number of inodes. */
+  fsfilcnt_t f_files;
+  /** Number of free inodes. */
+  fsfilcnt_t f_ffree;
+  /** Number of free inodes for non-root. */
+  fsfilcnt_t f_favail;
+  /** Filesystem id. */
+  unsigned long f_fsid;
+  /** Mount flags. (See `ST_` constants.) */
+  unsigned long f_flag;
+  /** Maximum filename length. */
+  unsigned long f_namemax;
 
-struct statvfs { __STATVFS64_BODY };
-struct statvfs64 { __STATVFS64_BODY };
+#if defined(__LP64__)
+  uint32_t __f_reserved[6];
+#endif
+};
 
-#undef __STATVFS64_BODY
-#undef __STATVFS64_RESERVED
-
+/** Flag for `f_flag` in `struct statvfs`: mounted read-only. */
 #define ST_RDONLY      0x0001
+
+/** Flag for `f_flag` in `struct statvfs`: setuid/setgid ignored. */
 #define ST_NOSUID      0x0002
+
+/** Flag for `f_flag` in `struct statvfs`: access to device files disallowed. */
 #define ST_NODEV       0x0004
+
+/** Flag for `f_flag` in `struct statvfs`: execution disallowed. */
 #define ST_NOEXEC      0x0008
+
+/** Flag for `f_flag` in `struct statvfs`: writes synced immediately. */
 #define ST_SYNCHRONOUS 0x0010
+
+/** Flag for `f_flag` in `struct statvfs`: mandatory locking permitted. */
 #define ST_MANDLOCK    0x0040
+
+/** Flag for `f_flag` in `struct statvfs`: access times not updated. */
 #define ST_NOATIME     0x0400
+
+/** Flag for `f_flag` in `struct statvfs`: directory access times not updated. */
 #define ST_NODIRATIME  0x0800
+
+/** Flag for `f_flag` in `struct statvfs`: see `MS_RELATIME`. */
 #define ST_RELATIME    0x1000
 
+#if __ANDROID_API__ >= 19
+// These functions are implemented as static inlines before API level 19.
+
+/**
+ * [statvfs(3)](http://man7.org/linux/man-pages/man3/statvfs.3.html)
+ * queries filesystem statistics for the given path.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int statvfs(const char* __path, struct statvfs* __buf) __INTRODUCED_IN(19);
-int statvfs64(const char* __path, struct statvfs64* __buf) __INTRODUCED_IN(21);
+
+/**
+ * [fstatvfs(3)](http://man7.org/linux/man-pages/man3/fstatvfs.3.html)
+ * queries filesystem statistics for the given file descriptor.
+ *
+ * Returns 0 on success, and returns -1 and sets `errno` on failure.
+ */
 int fstatvfs(int __fd, struct statvfs* __buf) __INTRODUCED_IN(19);
+
+#endif
+
+#if __ANDROID_API__ >= 21
+// These functions are implemented as static inlines before API level 21.
+
+/** Equivalent to statvfs(). */
+int statvfs64(const char* __path, struct statvfs64* __buf) __INTRODUCED_IN(21);
+
+/** Equivalent to fstatvfs(). */
 int fstatvfs64(int __fd, struct statvfs64* __buf) __INTRODUCED_IN(21);
 
+#endif
+
 __END_DECLS
 
-#endif
+#include <android/legacy_sys_statvfs_inlines.h>
diff --git a/libc/include/threads.h b/libc/include/threads.h
index 2c43b0b..752761d 100644
--- a/libc/include/threads.h
+++ b/libc/include/threads.h
@@ -82,71 +82,72 @@
 // This file is implemented as static inlines before API level 30.
 
 /** Uses `__flag` to ensure that `__function` is called exactly once. */
-void call_once(once_flag* __flag, void (*__function)(void));
+void call_once(once_flag* __flag, void (*__function)(void)) __INTRODUCED_IN(30);
 
 
 
 /**
  * Unblocks all threads blocked on `__cond`.
  */
-int cnd_broadcast(cnd_t* __cond);
+int cnd_broadcast(cnd_t* __cond) __INTRODUCED_IN(30);
 
 /**
  * Destroys a condition variable.
  */
-void cnd_destroy(cnd_t* __cond);
+void cnd_destroy(cnd_t* __cond) __INTRODUCED_IN(30);
 
 /**
  * Creates a condition variable.
  */
-int cnd_init(cnd_t* __cond);
+int cnd_init(cnd_t* __cond) __INTRODUCED_IN(30);
 
 /**
  * Unblocks one thread blocked on `__cond`.
  */
-int cnd_signal(cnd_t* __cond);
+int cnd_signal(cnd_t* __cond) __INTRODUCED_IN(30);
 
 /**
  * Unlocks `__mutex` and blocks until `__cond` is signaled or `__timeout` occurs.
  */
-int cnd_timedwait(cnd_t* __cond, mtx_t* __mutex, const struct timespec* __timeout);
+int cnd_timedwait(cnd_t* __cond, mtx_t* __mutex, const struct timespec* __timeout)
+    __INTRODUCED_IN(30);
 
 /**
  * Unlocks `__mutex` and blocks until `__cond` is signaled.
  */
-int cnd_wait(cnd_t* __cond, mtx_t* __mutex);
+int cnd_wait(cnd_t* __cond, mtx_t* __mutex) __INTRODUCED_IN(30);
 
 
 
 /**
  * Destroys a mutex.
  */
-void mtx_destroy(mtx_t* __mutex);
+void mtx_destroy(mtx_t* __mutex) __INTRODUCED_IN(30);
 
 /**
  * Creates a mutex.
  */
-int mtx_init(mtx_t* __mutex, int __type);
+int mtx_init(mtx_t* __mutex, int __type) __INTRODUCED_IN(30);
 
 /**
  * Blocks until `__mutex` is acquired.
  */
-int mtx_lock(mtx_t* __mutex);
+int mtx_lock(mtx_t* __mutex) __INTRODUCED_IN(30);
 
 /**
  * Blocks until `__mutex` is acquired or `__timeout` expires.
  */
-int mtx_timedlock(mtx_t* __mutex, const struct timespec* __timeout);
+int mtx_timedlock(mtx_t* __mutex, const struct timespec* __timeout) __INTRODUCED_IN(30);
 
 /**
  * Acquires `__mutex` or returns `thrd_busy`.
  */
-int mtx_trylock(mtx_t* __mutex);
+int mtx_trylock(mtx_t* __mutex) __INTRODUCED_IN(30);
 
 /**
  * Unlocks `__mutex`.
  */
-int mtx_unlock(mtx_t* __mutex);
+int mtx_unlock(mtx_t* __mutex) __INTRODUCED_IN(30);
 
 
 
@@ -154,33 +155,33 @@
  * Creates a new thread running `__function(__arg)`, and sets `*__thrd` to
  * the new thread.
  */
-int thrd_create(thrd_t* __thrd, thrd_start_t __function, void* __arg);
+int thrd_create(thrd_t* __thrd, thrd_start_t __function, void* __arg) __INTRODUCED_IN(30);
 
 /**
  * Returns the `thrd_t` corresponding to the caller.
  */
-thrd_t thrd_current(void);
+thrd_t thrd_current(void) __INTRODUCED_IN(30);
 
 /**
  * Tells the OS to automatically dispose of `__thrd` when it exits.
  */
-int thrd_detach(thrd_t __thrd);
+int thrd_detach(thrd_t __thrd) __INTRODUCED_IN(30);
 
 /**
  * Tests whether two threads are the same thread.
  */
-int thrd_equal(thrd_t __lhs, thrd_t __rhs);
+int thrd_equal(thrd_t __lhs, thrd_t __rhs) __INTRODUCED_IN(30);
 
 /**
  * Terminates the calling thread, setting its result to `__result`.
  */
-void thrd_exit(int __result) __noreturn;
+void thrd_exit(int __result) __noreturn __INTRODUCED_IN(30);
 
 /**
  * Blocks until `__thrd` terminates. If `__result` is not null, `*__result`
  * is set to the exiting thread's result.
  */
-int thrd_join(thrd_t __thrd, int* __result);
+int thrd_join(thrd_t __thrd, int* __result) __INTRODUCED_IN(30);
 
 /**
  * Blocks the caller for at least `__duration` unless a signal is delivered.
@@ -189,12 +190,12 @@
  *
  * Returns 0 on success, or -1 if a signal was delivered.
  */
-int thrd_sleep(const struct timespec* __duration, struct timespec* __remaining);
+int thrd_sleep(const struct timespec* __duration, struct timespec* __remaining) __INTRODUCED_IN(30);
 
 /**
  * Request that other threads should be scheduled.
  */
-void thrd_yield(void);
+void thrd_yield(void) __INTRODUCED_IN(30);
 
 
 
@@ -202,24 +203,24 @@
  * Creates a thread-specific storage key with the associated destructor (which
  * may be null).
  */
-int tss_create(tss_t* __key, tss_dtor_t __dtor);
+int tss_create(tss_t* __key, tss_dtor_t __dtor) __INTRODUCED_IN(30);
 
 /**
  * Destroys a thread-specific storage key.
  */
-void tss_delete(tss_t __key);
+void tss_delete(tss_t __key) __INTRODUCED_IN(30);
 
 /**
  * Returns the value for the current thread held in the thread-specific storage
  * identified by `__key`.
  */
-void* tss_get(tss_t __key);
+void* tss_get(tss_t __key) __INTRODUCED_IN(30);
 
 /**
  * Sets the current thread's value for the thread-specific storage identified
  * by `__key` to `__value`.
  */
-int tss_set(tss_t __key, void* __value);
+int tss_set(tss_t __key, void* __value) __INTRODUCED_IN(30);
 
 #endif
 
diff --git a/libc/kernel/tools/update_all.py b/libc/kernel/tools/update_all.py
index 9d5b02d..cef24dd 100755
--- a/libc/kernel/tools/update_all.py
+++ b/libc/kernel/tools/update_all.py
@@ -110,7 +110,9 @@
         content += '  #define SYS_%s %s\n' % (syscall, nr_name)
         content += '#endif\n'
 
-    updater.editFile('%s/include/bits/glibc-syscalls.h' % libc_root, content)
+    syscall_file = os.path.join(libc_root, 'include/bits/glibc-syscalls.h')
+    updater.readFile(syscall_file)
+    updater.editFile(syscall_file, content)
 
 
 try:
diff --git a/libc/kernel/uapi/asm-x86/asm/vmx.h b/libc/kernel/uapi/asm-x86/asm/vmx.h
index 0f7ede3..83365f8 100644
--- a/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -78,6 +78,5 @@
 #define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_PENDING_INTERRUPT, "PENDING_INTERRUPT" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_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" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
-#define VMX_ABORT_VMCS_CORRUPTED 3
 #define VMX_ABORT_LOAD_HOST_MSR_FAIL 4
 #endif
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index 11df994..3f09421 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -548,6 +548,7 @@
   char name[BPF_OBJ_NAME_LEN];
   __u32 ifindex;
   __u32 gpl_compatible : 1;
+  __u32 : 31;
   __u64 netns_dev;
   __u64 netns_ino;
   __u32 nr_jited_ksyms;
diff --git a/libc/kernel/uapi/linux/nilfs2_ondisk.h b/libc/kernel/uapi/linux/nilfs2_ondisk.h
index e9995a1..a05e7b7 100644
--- a/libc/kernel/uapi/linux/nilfs2_ondisk.h
+++ b/libc/kernel/uapi/linux/nilfs2_ondisk.h
@@ -20,6 +20,7 @@
 #define _LINUX_NILFS2_ONDISK_H
 #include <linux/types.h>
 #include <linux/magic.h>
+#include <asm/byteorder.h>
 #define NILFS_INODE_BMAP_SIZE 7
 struct nilfs_inode {
   __le64 i_blocks;
@@ -248,11 +249,11 @@
   NILFS_CHECKPOINT_MINOR,
 };
 #define NILFS_CHECKPOINT_FNS(flag,name) static inline void nilfs_checkpoint_set_ ##name(struct nilfs_checkpoint * cp) \
-{ cp->cp_flags = cpu_to_le32(le32_to_cpu(cp->cp_flags) | (1UL << NILFS_CHECKPOINT_ ##flag)); \
+{ cp->cp_flags = __cpu_to_le32(__le32_to_cpu(cp->cp_flags) | (1UL << NILFS_CHECKPOINT_ ##flag)); \
 } static inline void nilfs_checkpoint_clear_ ##name(struct nilfs_checkpoint * cp) \
-{ cp->cp_flags = cpu_to_le32(le32_to_cpu(cp->cp_flags) & ~(1UL << NILFS_CHECKPOINT_ ##flag)); \
+{ cp->cp_flags = __cpu_to_le32(__le32_to_cpu(cp->cp_flags) & ~(1UL << NILFS_CHECKPOINT_ ##flag)); \
 } static inline int nilfs_checkpoint_ ##name(const struct nilfs_checkpoint * cp) \
-{ return ! ! (le32_to_cpu(cp->cp_flags) & (1UL << NILFS_CHECKPOINT_ ##flag)); \
+{ return ! ! (__le32_to_cpu(cp->cp_flags) & (1UL << NILFS_CHECKPOINT_ ##flag)); \
 }
 struct nilfs_cpfile_header {
   __le64 ch_ncheckpoints;
@@ -272,11 +273,11 @@
   NILFS_SEGMENT_USAGE_ERROR,
 };
 #define NILFS_SEGMENT_USAGE_FNS(flag,name) static inline void nilfs_segment_usage_set_ ##name(struct nilfs_segment_usage * su) \
-{ su->su_flags = cpu_to_le32(le32_to_cpu(su->su_flags) | (1UL << NILFS_SEGMENT_USAGE_ ##flag)); \
+{ su->su_flags = __cpu_to_le32(__le32_to_cpu(su->su_flags) | (1UL << NILFS_SEGMENT_USAGE_ ##flag)); \
 } static inline void nilfs_segment_usage_clear_ ##name(struct nilfs_segment_usage * su) \
-{ su->su_flags = cpu_to_le32(le32_to_cpu(su->su_flags) & ~(1UL << NILFS_SEGMENT_USAGE_ ##flag)); \
+{ su->su_flags = __cpu_to_le32(__le32_to_cpu(su->su_flags) & ~(1UL << NILFS_SEGMENT_USAGE_ ##flag)); \
 } static inline int nilfs_segment_usage_ ##name(const struct nilfs_segment_usage * su) \
-{ return ! ! (le32_to_cpu(su->su_flags) & (1UL << NILFS_SEGMENT_USAGE_ ##flag)); \
+{ return ! ! (__le32_to_cpu(su->su_flags) & (1UL << NILFS_SEGMENT_USAGE_ ##flag)); \
 }
 struct nilfs_sufile_header {
   __le64 sh_ncleansegs;
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 815f53d..94bf4ba 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 328192
+#define LINUX_VERSION_CODE 328198
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index e6df45c..f77c6bd 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -210,7 +210,7 @@
 #define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2')
 #define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2')
 #define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2')
-#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('B', 'A', '1', '2')
+#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2')
 #define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2')
 #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O')
 #define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5')
diff --git a/libc/libc.map.txt b/libc/libc.map.txt
index 0cab83d..9b39bb8 100644
--- a/libc/libc.map.txt
+++ b/libc/libc.map.txt
@@ -1493,6 +1493,8 @@
     cnd_signal;
     cnd_timedwait;
     cnd_wait;
+    memfd_create;
+    mlock2;
     mtx_destroy;
     mtx_init;
     mtx_lock;
@@ -1503,6 +1505,7 @@
     pthread_mutex_clocklock;
     pthread_rwlock_clockrdlock;
     pthread_rwlock_clockwrlock;
+    renameat2;
     sem_clockwait;
     thrd_create;
     thrd_current;
diff --git a/libc/malloc_debug/Android.bp b/libc/malloc_debug/Android.bp
index d6b8531..2bff260 100644
--- a/libc/malloc_debug/Android.bp
+++ b/libc/malloc_debug/Android.bp
@@ -27,6 +27,12 @@
     },
     native_coverage: false,
 
+    target: {
+        android: {
+            static_libs: ["libc++demangle"],
+        },
+    },
+
     // -Wno-error=format-zero-length needed for gcc to compile.
     cflags: [
         "-Wall",
diff --git a/libc/private/WriteProtected.h b/libc/private/WriteProtected.h
index d240e14..26c239c 100644
--- a/libc/private/WriteProtected.h
+++ b/libc/private/WriteProtected.h
@@ -47,11 +47,11 @@
   WriteProtectedContents<T> contents;
 
   int set_protection(int prot) {
-    auto addr = reinterpret_cast<uintptr_t>(&contents);
+    auto addr = &contents;
 #if __has_feature(hwaddress_sanitizer)
     // The mprotect system call does not currently untag pointers, so do it
     // ourselves.
-    addr &= (1ULL << 56) - 1;
+    addr = untag_address(addr);
 #endif
     return mprotect(reinterpret_cast<void*>(addr), PAGE_SIZE, prot);
   }
diff --git a/libc/private/bionic_globals.h b/libc/private/bionic_globals.h
index d73079e..ef735ba 100644
--- a/libc/private/bionic_globals.h
+++ b/libc/private/bionic_globals.h
@@ -88,6 +88,10 @@
   TlsModules tls_modules;
   BionicAllocator tls_allocator;
 
+  // Values passed from the HWASan runtime (via libc.so) to the loader.
+  void (*load_hook)(ElfW(Addr) base, const ElfW(Phdr)* phdr, ElfW(Half) phnum) = nullptr;
+  void (*unload_hook)(ElfW(Addr) base, const ElfW(Phdr)* phdr, ElfW(Half) phnum) = nullptr;
+
   // Values passed from the linker to libc.so.
   const char* init_progname = nullptr;
   char** init_environ = nullptr;
diff --git a/libc/private/bionic_macros.h b/libc/private/bionic_macros.h
index 4800e3a..54903f5 100644
--- a/libc/private/bionic_macros.h
+++ b/libc/private/bionic_macros.h
@@ -50,10 +50,7 @@
 }
 
 #if defined(__arm__)
-// Do not emit anything for arm, clang does not allow emiting an arm unwind
-// directive.
-// #define BIONIC_STOP_UNWIND asm volatile(".cantunwind")
-#define BIONIC_STOP_UNWIND
+#define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined r14")
 #elif defined(__aarch64__)
 #define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined x30")
 #elif defined(__i386__)
@@ -87,3 +84,12 @@
 #else
 #define __BIONIC_FALLTHROUGH
 #endif
+
+template <typename T>
+static inline T* untag_address(T* p) {
+#if defined(__aarch64__)
+  return reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p) & ((1ULL << 56) - 1));
+#else
+  return p;
+#endif
+}
diff --git a/libdl/libdl_cfi.cpp b/libdl/libdl_cfi.cpp
index 1446143..3b68fc7 100644
--- a/libdl/libdl_cfi.cpp
+++ b/libdl/libdl_cfi.cpp
@@ -44,11 +44,8 @@
 }
 
 static uint16_t shadow_load(void* p) {
-  uintptr_t addr = reinterpret_cast<uintptr_t>(p);
-#ifdef __aarch64__
   // Untag the pointer to move it into the address space covered by the shadow.
-  addr &= (1ULL << 56) - 1;
-#endif
+  uintptr_t addr = reinterpret_cast<uintptr_t>(untag_address(p));
   uintptr_t ofs = CFIShadow::MemToShadowOffset(addr);
   if (ofs > CFIShadow::kShadowSize) return CFIShadow::kInvalidShadow;
   return *reinterpret_cast<uint16_t*>(shadow_base_storage.v + ofs);
diff --git a/libm/x86/e_exp.S b/libm/x86/e_exp.S
deleted file mode 100644
index eab619d..0000000
--- a/libm/x86/e_exp.S
+++ /dev/null
@@ -1,576 +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).
-//        x    x/log(2)     n
-//       e  = 2          = 2 * T[j] * (1 + P(y))
-//  where
-//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
-//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
-//                  j/K
-//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
-//
-//       P(y) is a minimax polynomial approximation of exp(x)-1
-//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
-//
-//  To avoid problems with arithmetic overflow and underflow,
-//            n                        n1  n2
-//  value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
-//  where BIAS is a value of exponent bias.
-//
-// Special cases:
-//  exp(NaN) = NaN
-//  exp(+INF) = +INF
-//  exp(-INF) = 0
-//  exp(x) = 1 for subnormals
-//  for finite argument, only exp(0)=1 is exact
-//  For IEEE double
-//    if x >  709.782712893383973096 then exp(x) overflow
-//    if x < -745.133219101941108420 then exp(x) underflow
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  exp
-ENTRY(exp)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $120, %esp
-        movl      %ebx, 64(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     128(%esp), %xmm0
-        unpcklpd  %xmm0, %xmm0
-        movapd    64(%ebx), %xmm1
-        movapd    48(%ebx), %xmm6
-        movapd    80(%ebx), %xmm2
-        movapd    96(%ebx), %xmm3
-        pextrw    $3, %xmm0, %eax
-        andl      $32767, %eax
-        movl      $16527, %edx
-        subl      %eax, %edx
-        subl      $15504, %eax
-        orl       %eax, %edx
-        cmpl      $-2147483648, %edx
-        jae       .L_2TAG_PACKET_0.0.2
-        mulpd     %xmm0, %xmm1
-        addpd     %xmm6, %xmm1
-        movapd    %xmm1, %xmm7
-        subpd     %xmm6, %xmm1
-        mulpd     %xmm1, %xmm2
-        movapd    128(%ebx), %xmm4
-        mulpd     %xmm1, %xmm3
-        movapd    144(%ebx), %xmm5
-        subpd     %xmm2, %xmm0
-        movd      %xmm7, %eax
-        movl      %eax, %ecx
-        andl      $63, %ecx
-        shll      $4, %ecx
-        sarl      $6, %eax
-        movl      %eax, %edx
-        movdqa    16(%ebx), %xmm6
-        pand      %xmm6, %xmm7
-        movdqa    32(%ebx), %xmm6
-        paddq     %xmm6, %xmm7
-        psllq     $46, %xmm7
-        subpd     %xmm3, %xmm0
-        movapd    160(%ebx,%ecx), %xmm2
-        mulpd     %xmm0, %xmm4
-        movapd    %xmm0, %xmm6
-        movapd    %xmm0, %xmm1
-        mulpd     %xmm6, %xmm6
-        mulpd     %xmm6, %xmm0
-        addpd     %xmm4, %xmm5
-        mulsd     %xmm6, %xmm0
-        mulpd     112(%ebx), %xmm6
-        addsd     %xmm2, %xmm1
-        unpckhpd  %xmm2, %xmm2
-        mulpd     %xmm5, %xmm0
-        addsd     %xmm0, %xmm1
-        orpd      %xmm7, %xmm2
-        unpckhpd  %xmm0, %xmm0
-        addsd     %xmm1, %xmm0
-        addsd     %xmm6, %xmm0
-        addl      $894, %edx
-        cmpl      $1916, %edx
-        ja        .L_2TAG_PACKET_1.0.2
-        mulsd     %xmm2, %xmm0
-        addsd     %xmm2, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_1.0.2:
-        fstcw     24(%esp)
-        movzwl    24(%esp), %edx
-        orl       $768, %edx
-        movw      %dx, 28(%esp)
-        fldcw     28(%esp)
-        movl      %eax, %edx
-        sarl      $1, %eax
-        subl      %eax, %edx
-        movdqa    (%ebx), %xmm6
-        pandn     %xmm2, %xmm6
-        addl      $1023, %eax
-        movd      %eax, %xmm3
-        psllq     $52, %xmm3
-        orpd      %xmm3, %xmm6
-        addl      $1023, %edx
-        movd      %edx, %xmm4
-        psllq     $52, %xmm4
-        movsd     %xmm0, 8(%esp)
-        fldl      8(%esp)
-        movsd     %xmm6, 16(%esp)
-        fldl      16(%esp)
-        fmul      %st, %st(1)
-        faddp     %st, %st(1)
-        movsd     %xmm4, 8(%esp)
-        fldl      8(%esp)
-        fmulp     %st, %st(1)
-        fstpl     8(%esp)
-        movsd     8(%esp), %xmm0
-        fldcw     24(%esp)
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        cmpl      $32752, %ecx
-        jae       .L_2TAG_PACKET_3.0.2
-        cmpl      $0, %ecx
-        je        .L_2TAG_PACKET_4.0.2
-        jmp       .L_2TAG_PACKET_2.0.2
-        cmpl      $-2147483648, %ecx
-        jb        .L_2TAG_PACKET_3.0.2
-        cmpl      $-1064950997, %ecx
-        jb        .L_2TAG_PACKET_2.0.2
-        ja        .L_2TAG_PACKET_4.0.2
-        movl      128(%esp), %edx
-        cmpl      $-17155601, %edx
-        jb        .L_2TAG_PACKET_2.0.2
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_3.0.2:
-        movl      $14, %edx
-        jmp       .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_4.0.2:
-        movl      $15, %edx
-.L_2TAG_PACKET_5.0.2:
-        movsd     %xmm0, (%esp)
-        movsd     128(%esp), %xmm0
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_7.0.2:
-        cmpl      $2146435072, %eax
-        jae       .L_2TAG_PACKET_8.0.2
-        movl      132(%esp), %eax
-        cmpl      $-2147483648, %eax
-        jae       .L_2TAG_PACKET_9.0.2
-        movsd     1208(%ebx), %xmm0
-        mulsd     %xmm0, %xmm0
-        movl      $14, %edx
-        jmp       .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_9.0.2:
-        movsd     1216(%ebx), %xmm0
-        mulsd     %xmm0, %xmm0
-        movl      $15, %edx
-        jmp       .L_2TAG_PACKET_5.0.2
-.L_2TAG_PACKET_8.0.2:
-        movl      128(%esp), %edx
-        cmpl      $2146435072, %eax
-        ja        .L_2TAG_PACKET_10.0.2
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_10.0.2
-        movl      132(%esp), %eax
-        cmpl      $2146435072, %eax
-        jne       .L_2TAG_PACKET_11.0.2
-        movsd     1192(%ebx), %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_11.0.2:
-        movsd     1200(%ebx), %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_10.0.2:
-        movsd     128(%esp), %xmm0
-        addsd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
-        movl      132(%esp), %eax
-        andl      $2147483647, %eax
-        cmpl      $1083179008, %eax
-        jae       .L_2TAG_PACKET_7.0.2
-        movsd     128(%esp), %xmm0
-        addsd     1184(%ebx), %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_2.0.2:
-        movsd     %xmm0, 48(%esp)
-        fldl      48(%esp)
-.L_2TAG_PACKET_6.0.2:
-        movl      64(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(exp)
-# -- End  exp
-
-# Start file scope ASM
-ALIAS_SYMBOL(expl, exp);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	4293918720
-	.long	0
-	.long	4293918720
-	.long	4294967232
-	.long	0
-	.long	4294967232
-	.long	0
-	.long	65472
-	.long	0
-	.long	65472
-	.long	0
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	1127743488
-	.long	1697350398
-	.long	1079448903
-	.long	1697350398
-	.long	1079448903
-	.long	4277796864
-	.long	1065758274
-	.long	4277796864
-	.long	1065758274
-	.long	3164486458
-	.long	1025308570
-	.long	3164486458
-	.long	1025308570
-	.long	4294967294
-	.long	1071644671
-	.long	4294967294
-	.long	1071644671
-	.long	3811088480
-	.long	1062650204
-	.long	1432067621
-	.long	1067799893
-	.long	3230715663
-	.long	1065423125
-	.long	1431604129
-	.long	1069897045
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	235107661
-	.long	1018002367
-	.long	1048019040
-	.long	11418
-	.long	896005651
-	.long	1015861842
-	.long	3541402996
-	.long	22960
-	.long	1642514529
-	.long	1012987726
-	.long	410360776
-	.long	34629
-	.long	1568897900
-	.long	1016568486
-	.long	1828292879
-	.long	46424
-	.long	1882168529
-	.long	1010744893
-	.long	852742562
-	.long	58348
-	.long	509852888
-	.long	1017336174
-	.long	3490863952
-	.long	70401
-	.long	653277307
-	.long	1017431380
-	.long	2930322911
-	.long	82586
-	.long	1649557430
-	.long	1017729363
-	.long	1014845818
-	.long	94904
-	.long	1058231231
-	.long	1015777676
-	.long	3949972341
-	.long	107355
-	.long	1044000607
-	.long	1016786167
-	.long	828946858
-	.long	119943
-	.long	1151779725
-	.long	1015705409
-	.long	2288159958
-	.long	132667
-	.long	3819481236
-	.long	1016499965
-	.long	1853186616
-	.long	145530
-	.long	2552227826
-	.long	1015039787
-	.long	1709341917
-	.long	158533
-	.long	1829350193
-	.long	1015216097
-	.long	4112506593
-	.long	171677
-	.long	1913391795
-	.long	1015756674
-	.long	2799960843
-	.long	184965
-	.long	1303423926
-	.long	1015238005
-	.long	171030293
-	.long	198398
-	.long	1574172746
-	.long	1016061241
-	.long	2992903935
-	.long	211976
-	.long	3424156969
-	.long	1017196428
-	.long	926591434
-	.long	225703
-	.long	1938513547
-	.long	1017631273
-	.long	887463926
-	.long	239579
-	.long	2804567149
-	.long	1015390024
-	.long	1276261410
-	.long	253606
-	.long	631083525
-	.long	1017690182
-	.long	569847337
-	.long	267786
-	.long	1623370770
-	.long	1011049453
-	.long	1617004845
-	.long	282120
-	.long	3667985273
-	.long	1013894369
-	.long	3049340112
-	.long	296610
-	.long	3145379760
-	.long	1014403278
-	.long	3577096743
-	.long	311258
-	.long	2603100681
-	.long	1017152460
-	.long	1990012070
-	.long	326066
-	.long	3249202951
-	.long	1017448880
-	.long	1453150081
-	.long	341035
-	.long	419288974
-	.long	1016280325
-	.long	917841882
-	.long	356167
-	.long	3793507337
-	.long	1016095713
-	.long	3712504873
-	.long	371463
-	.long	728023093
-	.long	1016345318
-	.long	363667784
-	.long	386927
-	.long	2582678538
-	.long	1017123460
-	.long	2956612996
-	.long	402558
-	.long	7592966
-	.long	1016721543
-	.long	2186617380
-	.long	418360
-	.long	228611441
-	.long	1016696141
-	.long	1719614412
-	.long	434334
-	.long	2261665670
-	.long	1017457593
-	.long	1013258798
-	.long	450482
-	.long	544148907
-	.long	1017323666
-	.long	3907805043
-	.long	466805
-	.long	2383914918
-	.long	1017143586
-	.long	1447192520
-	.long	483307
-	.long	1176412038
-	.long	1017267372
-	.long	1944781190
-	.long	499988
-	.long	2882956373
-	.long	1013312481
-	.long	919555682
-	.long	516851
-	.long	3154077648
-	.long	1016528543
-	.long	2571947538
-	.long	533897
-	.long	348651999
-	.long	1016405780
-	.long	2604962540
-	.long	551129
-	.long	3253791412
-	.long	1015920431
-	.long	1110089947
-	.long	568549
-	.long	1509121860
-	.long	1014756995
-	.long	2568320822
-	.long	586158
-	.long	2617649212
-	.long	1017340090
-	.long	2966275556
-	.long	603959
-	.long	553214634
-	.long	1016457425
-	.long	2682146383
-	.long	621954
-	.long	730975783
-	.long	1014083580
-	.long	2191782032
-	.long	640145
-	.long	1486499517
-	.long	1016818996
-	.long	2069751140
-	.long	658534
-	.long	2595788928
-	.long	1016407932
-	.long	2990417244
-	.long	677123
-	.long	1853053619
-	.long	1015310724
-	.long	1434058175
-	.long	695915
-	.long	2462790535
-	.long	1015814775
-	.long	2572866477
-	.long	714911
-	.long	3693944214
-	.long	1017259110
-	.long	3092190714
-	.long	734114
-	.long	2979333550
-	.long	1017188654
-	.long	4076559942
-	.long	753526
-	.long	174054861
-	.long	1014300631
-	.long	2420883922
-	.long	773150
-	.long	816778419
-	.long	1014197934
-	.long	3716502172
-	.long	792987
-	.long	3507050924
-	.long	1015341199
-	.long	777507147
-	.long	813041
-	.long	1821514088
-	.long	1013410604
-	.long	3706687593
-	.long	833312
-	.long	920623539
-	.long	1016295433
-	.long	1242007931
-	.long	853805
-	.long	2789017511
-	.long	1014276997
-	.long	3707479175
-	.long	874520
-	.long	3586233004
-	.long	1015962192
-	.long	64696965
-	.long	895462
-	.long	474650514
-	.long	1016642419
-	.long	863738718
-	.long	916631
-	.long	1614448851
-	.long	1014281732
-	.long	3884662774
-	.long	938030
-	.long	2450082086
-	.long	1016164135
-	.long	2728693977
-	.long	959663
-	.long	1101668360
-	.long	1015989180
-	.long	3999357479
-	.long	981531
-	.long	835814894
-	.long	1015702697
-	.long	1533953344
-	.long	1003638
-	.long	1301400989
-	.long	1014466875
-	.long	2174652632
-	.long	1025985
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	2146435072
-	.long	0
-	.long	0
-	.long	4294967295
-	.long	2146435071
-	.long	0
-	.long	1048576
-	.type	static_const_table,@object
-	.size	static_const_table,1224
-	.data
-	.section .note.GNU-stack, ""
-# End
diff --git a/libm/x86/e_log.S b/libm/x86/e_log.S
deleted file mode 100644
index a6181ca..0000000
--- a/libm/x86/e_log.S
+++ /dev/null
@@ -1,780 +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
-//                     ---------------------
-//
-//    x=2^k * mx, mx in [1,2)
-//
-//    Get B~1/mx based on the output of rcpss instruction (B0)
-//    B = int((B0*2^7+0.5))/2^7
-//
-//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
-//
-//    Result:  k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6)  and
-//             p(r) is a degree 7 polynomial
-//             -log(B) read from data table (high, low parts)
-//             Result is formed from high and low parts
-//
-// Special cases:
-//  log(NaN) = quiet NaN, and raise invalid exception
-//  log(+INF) = that INF
-//  log(0) = -INF with divide-by-zero exception raised
-//  log(1) = +0
-//  log(x) = NaN with invalid exception raised if x < -0, including -INF
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  log
-ENTRY(log)
-# parameter 1: 8 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $104, %esp
-        movl      %ebx, 40(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        xorpd     %xmm3, %xmm3
-        movl      $30704, %edx
-        pinsrw    $3, %edx, %xmm3
-        movsd     112(%esp), %xmm0
-        movapd    %xmm0, %xmm1
-        movl      $32768, %ecx
-        movd      %ecx, %xmm4
-        movsd     2128(%ebx), %xmm5
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        psllq     $5, %xmm0
-        movl      $16352, %ecx
-        psrlq     $34, %xmm0
-        rcpss     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $228, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        subl      $16, %eax
-        cmpl      $32736, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
-        paddd     %xmm4, %xmm0
-        orpd      %xmm3, %xmm1
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm1, %xmm5
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm1
-        mulpd     %xmm0, %xmm5
-        andl      $32752, %eax
-        subl      %ecx, %eax
-        cvtsi2sdl %eax, %xmm7
-        mulsd     %xmm0, %xmm1
-        movsd     2064(%ebx), %xmm6
-        movapd    2080(%ebx), %xmm3
-        subsd     %xmm2, %xmm5
-        andl      $16711680, %edx
-        shrl      $12, %edx
-        movapd    (%ebx,%edx), %xmm0
-        movapd    2096(%ebx), %xmm4
-        addsd     %xmm5, %xmm1
-        movapd    2112(%ebx), %xmm2
-        mulsd     %xmm7, %xmm6
-        pshufd    $68, %xmm1, %xmm5
-        mulsd     2072(%ebx), %xmm7
-        mulsd     %xmm1, %xmm3
-        addsd     %xmm6, %xmm0
-        mulpd     %xmm5, %xmm4
-        mulpd     %xmm5, %xmm5
-        pshufd    $228, %xmm0, %xmm6
-        addsd     %xmm1, %xmm0
-        addpd     %xmm2, %xmm4
-        mulpd     %xmm5, %xmm3
-        subsd     %xmm0, %xmm6
-        mulsd     %xmm1, %xmm4
-        pshufd    $238, %xmm0, %xmm2
-        addsd     %xmm6, %xmm1
-        mulsd     %xmm5, %xmm5
-        addsd     %xmm2, %xmm7
-        addpd     %xmm3, %xmm4
-        addsd     %xmm7, %xmm1
-        mulpd     %xmm5, %xmm4
-        addsd     %xmm4, %xmm1
-        pshufd    $238, %xmm4, %xmm5
-        addsd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_0.0.2:
-        movsd     112(%esp), %xmm0
-        movapd    %xmm0, %xmm1
-        addl      $16, %eax
-        cmpl      $32768, %eax
-        jae       .L_2TAG_PACKET_3.0.2
-        cmpl      $16, %eax
-        jb        .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
-        addsd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_2.0.2
-.L_2TAG_PACKET_6.0.2:
-        ja        .L_2TAG_PACKET_5.0.2
-        cmpl      $0, %edx
-        ja        .L_2TAG_PACKET_5.0.2
-        jmp       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_3.0.2:
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        addl      %ecx, %ecx
-        cmpl      $-2097152, %ecx
-        jae       .L_2TAG_PACKET_6.0.2
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_7.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm1
-        movl      $3, %edx
-        mulsd     %xmm1, %xmm0
-.L_2TAG_PACKET_9.0.2:
-        movsd     %xmm0, (%esp)
-        movsd     112(%esp), %xmm0
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_10.0.2
-.L_2TAG_PACKET_8.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm0
-        divsd     %xmm1, %xmm0
-        movl      $2, %edx
-        jmp       .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_4.0.2:
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_8.0.2
-        xorpd     %xmm1, %xmm1
-        movl      $18416, %eax
-        pinsrw    $3, %eax, %xmm1
-        mulsd     %xmm1, %xmm0
-        movapd    %xmm0, %xmm1
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        psllq     $5, %xmm0
-        movl      $18416, %ecx
-        psrlq     $34, %xmm0
-        rcpss     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $228, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        movsd     %xmm0, 24(%esp)
-        fldl      24(%esp)
-.L_2TAG_PACKET_10.0.2:
-        movl      40(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(log)
-# -- End  log
-
-# Start file scope ASM
-ALIAS_SYMBOL(logl, log);
-# End file scope ASM
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	4277811200
-	.long	1072049730
-	.long	2479318832
-	.long	1026487127
-	.long	2854492160
-	.long	1072033410
-	.long	215631550
-	.long	1025638968
-	.long	1547061248
-	.long	1072017216
-	.long	2886781435
-	.long	1026423395
-	.long	649825280
-	.long	1072001146
-	.long	4281533405
-	.long	1024038923
-	.long	646346752
-	.long	1071985198
-	.long	1562735921
-	.long	1023790276
-	.long	2203734016
-	.long	1071969370
-	.long	1838397691
-	.long	3173936209
-	.long	1872169984
-	.long	1071953661
-	.long	3981202460
-	.long	1022325013
-	.long	669557760
-	.long	1071938069
-	.long	4182597802
-	.long	3173174122
-	.long	4076413952
-	.long	1071922591
-	.long	1209029111
-	.long	3170736207
-	.long	556125184
-	.long	1071907228
-	.long	821086028
-	.long	3173437049
-	.long	204914688
-	.long	1071891976
-	.long	2097025986
-	.long	3171071798
-	.long	387545088
-	.long	1071876834
-	.long	3142936996
-	.long	3173092218
-	.long	2912783360
-	.long	1071861800
-	.long	2502420140
-	.long	1024505919
-	.long	1144260608
-	.long	1071846874
-	.long	3315658140
-	.long	3173469843
-	.long	1471209472
-	.long	1071832053
-	.long	129621009
-	.long	3172443877
-	.long	1829683200
-	.long	1071817336
-	.long	3885467693
-	.long	1025535275
-	.long	288676864
-	.long	1071802722
-	.long	86139472
-	.long	3171639793
-	.long	3636378624
-	.long	1071788208
-	.long	1850238587
-	.long	1024654342
-	.long	1606817792
-	.long	1071773795
-	.long	3388899795
-	.long	3173675586
-	.long	1236164608
-	.long	1071759480
-	.long	3983599207
-	.long	1020046558
-	.long	1089616896
-	.long	1071745262
-	.long	4171974224
-	.long	1024773198
-	.long	4143093760
-	.long	1071731139
-	.long	2727587401
-	.long	3173965207
-	.long	600267776
-	.long	1071717112
-	.long	3147685042
-	.long	3173353031
-	.long	2249313280
-	.long	1071703177
-	.long	125835074
-	.long	1025255832
-	.long	3805303808
-	.long	1071689334
-	.long	2289991207
-	.long	1025460331
-	.long	87278592
-	.long	1071675583
-	.long	1106114045
-	.long	1025933602
-	.long	3195405312
-	.long	1071661920
-	.long	3885316576
-	.long	3171206239
-	.long	3853649920
-	.long	1071648346
-	.long	2977069852
-	.long	3171236771
-	.long	2944026624
-	.long	1071625048
-	.long	1008093493
-	.long	1023444474
-	.long	3993180160
-	.long	1071598247
-	.long	1862355595
-	.long	1024642533
-	.long	1454641152
-	.long	1071571617
-	.long	1514603089
-	.long	1026500596
-	.long	3286085632
-	.long	1071545154
-	.long	1400028424
-	.long	3173279056
-	.long	438773760
-	.long	1071518858
-	.long	120727864
-	.long	3172148914
-	.long	1212979200
-	.long	1071492725
-	.long	1625055594
-	.long	3172901933
-	.long	1189017600
-	.long	1071466754
-	.long	3920062376
-	.long	1025727407
-	.long	403064832
-	.long	1071440943
-	.long	1053271728
-	.long	3171391427
-	.long	3343210496
-	.long	1071415289
-	.long	3243395502
-	.long	3173627613
-	.long	1765777408
-	.long	1071389792
-	.long	2145968512
-	.long	1026354304
-	.long	461430784
-	.long	1071364449
-	.long	4094322285
-	.long	1026021467
-	.long	71706624
-	.long	1071339258
-	.long	763632021
-	.long	1024496933
-	.long	1380503552
-	.long	1071314217
-	.long	1383547992
-	.long	3173088453
-	.long	1015732224
-	.long	1071289325
-	.long	3198646877
-	.long	1025390322
-	.long	35977216
-	.long	1071264580
-	.long	2141026805
-	.long	1025754693
-	.long	3927306240
-	.long	1071239979
-	.long	282116272
-	.long	3173394334
-	.long	1125341184
-	.long	1071215523
-	.long	2768427504
-	.long	3172279059
-	.long	1666971648
-	.long	1071191208
-	.long	786837629
-	.long	3172427445
-	.long	2827694080
-	.long	1071167033
-	.long	3857122416
-	.long	3173014241
-	.long	2003683328
-	.long	1071142997
-	.long	859010954
-	.long	1026545007
-	.long	1004017664
-	.long	1071119098
-	.long	3356644970
-	.long	3173458064
-	.long	1753020416
-	.long	1071095334
-	.long	788338552
-	.long	1026157693
-	.long	1992718336
-	.long	1071071704
-	.long	1239179443
-	.long	1026394889
-	.long	3870234624
-	.long	1071048206
-	.long	2082614663
-	.long	1024926053
-	.long	1050437632
-	.long	1071024840
-	.long	660007840
-	.long	1025548499
-	.long	188395520
-	.long	1071001603
-	.long	3878792704
-	.long	3173889571
-	.long	3747176448
-	.long	1070978493
-	.long	144991708
-	.long	3171552042
-	.long	1405669376
-	.long	1070955511
-	.long	3999088879
-	.long	1025486317
-	.long	121151488
-	.long	1070932654
-	.long	2170865497
-	.long	1026473584
-	.long	2652319744
-	.long	1070909920
-	.long	453695652
-	.long	3173916809
-	.long	3262236672
-	.long	1070887309
-	.long	157800053
-	.long	3173984206
-	.long	601221120
-	.long	1070864820
-	.long	3968917661
-	.long	1023992886
-	.long	1999843328
-	.long	1070842450
-	.long	3053895004
-	.long	1024998228
-	.long	1992167424
-	.long	1070820199
-	.long	2968614856
-	.long	1024552653
-	.long	3788726272
-	.long	1070798065
-	.long	3542170808
-	.long	3173573242
-	.long	2094829568
-	.long	1070776048
-	.long	1246758132
-	.long	1026202874
-	.long	288675840
-	.long	1070754146
-	.long	3747328950
-	.long	1026331585
-	.long	1829681152
-	.long	1070732357
-	.long	3125197546
-	.long	1024100318
-	.long	1666869248
-	.long	1070710681
-	.long	1363656119
-	.long	1026336493
-	.long	3417110528
-	.long	1070689116
-	.long	4154791553
-	.long	1026267853
-	.long	2183653376
-	.long	1070667662
-	.long	1671819292
-	.long	3173785870
-	.long	1734434816
-	.long	1070646317
-	.long	373091049
-	.long	1025972363
-	.long	1615681536
-	.long	1070625080
-	.long	384650897
-	.long	1022926043
-	.long	1445382144
-	.long	1070603950
-	.long	344320330
-	.long	3172397196
-	.long	1823715328
-	.long	1070569756
-	.long	3389841200
-	.long	1025231852
-	.long	3839688704
-	.long	1070527917
-	.long	1706790417
-	.long	3167363349
-	.long	4293332992
-	.long	1070486286
-	.long	1614935088
-	.long	1019351591
-	.long	2966720512
-	.long	1070444861
-	.long	4145393717
-	.long	3173711658
-	.long	4066729984
-	.long	1070403639
-	.long	1974925028
-	.long	3171437182
-	.long	3337621504
-	.long	1070362619
-	.long	3314953170
-	.long	3169971314
-	.long	943448064
-	.long	1070321799
-	.long	1498682038
-	.long	3173862340
-	.long	1465634816
-	.long	1070281176
-	.long	1319952810
-	.long	3171693965
-	.long	1015734272
-	.long	1070240749
-	.long	1347821929
-	.long	3173544515
-	.long	118001664
-	.long	1070200516
-	.long	1751482746
-	.long	1026134093
-	.long	3707174912
-	.long	1070160474
-	.long	1486946159
-	.long	1023930920
-	.long	3946381312
-	.long	1070120623
-	.long	2867408081
-	.long	3171368276
-	.long	1699848192
-	.long	1070080961
-	.long	2590187139
-	.long	1025379803
-	.long	2235846656
-	.long	1070041485
-	.long	1888568069
-	.long	3172754960
-	.long	2339729408
-	.long	1070002194
-	.long	3852214753
-	.long	3173323149
-	.long	3196850176
-	.long	1069963086
-	.long	742141560
-	.long	1025101707
-	.long	1800683520
-	.long	1069924160
-	.long	3949500444
-	.long	3172102179
-	.long	3835801600
-	.long	1069885413
-	.long	3848895943
-	.long	1025913832
-	.long	2201202688
-	.long	1069846845
-	.long	1425913464
-	.long	1025868665
-	.long	2778279936
-	.long	1069808453
-	.long	2120889677
-	.long	3173831128
-	.long	2954203136
-	.long	1069770236
-	.long	592147081
-	.long	1019621288
-	.long	210141184
-	.long	1069732193
-	.long	3414275233
-	.long	1023647084
-	.long	709476352
-	.long	1069694321
-	.long	2413027164
-	.long	1024462115
-	.long	2116284416
-	.long	1069656619
-	.long	1144559924
-	.long	1026336654
-	.long	2183651328
-	.long	1069619086
-	.long	3459057650
-	.long	1025634168
-	.long	3047047168
-	.long	1069581720
-	.long	1879674924
-	.long	3173508573
-	.long	970711040
-	.long	1069541521
-	.long	1335954173
-	.long	3173332182
-	.long	2198478848
-	.long	1069467449
-	.long	2951103968
-	.long	3173892200
-	.long	1669611520
-	.long	1069393703
-	.long	531044147
-	.long	1025149248
-	.long	29114368
-	.long	1069320280
-	.long	3327831251
-	.long	1025918673
-	.long	2376949760
-	.long	1069247176
-	.long	737634533
-	.long	3172176000
-	.long	1085390848
-	.long	1069174390
-	.long	3108243400
-	.long	3171828406
-	.long	1566130176
-	.long	1069101918
-	.long	985483226
-	.long	1025708380
-	.long	792780800
-	.long	1069029758
-	.long	4184866295
-	.long	1024426204
-	.long	183156736
-	.long	1068957907
-	.long	2845699378
-	.long	1022107277
-	.long	1301782528
-	.long	1068886362
-	.long	1012735262
-	.long	3173804294
-	.long	1562411008
-	.long	1068815121
-	.long	2197086703
-	.long	3170187813
-	.long	2815549440
-	.long	1068744181
-	.long	2782613207
-	.long	1026345054
-	.long	2756124672
-	.long	1068673540
-	.long	2929486205
-	.long	3173037800
-	.long	3511050240
-	.long	1068603195
-	.long	1443733147
-	.long	3173331549
-	.long	3047047168
-	.long	1068533144
-	.long	1879674924
-	.long	3172459997
-	.long	3221667840
-	.long	1068427825
-	.long	1338588027
-	.long	3171815742
-	.long	3453861888
-	.long	1068288883
-	.long	1205348359
-	.long	3172624626
-	.long	3506110464
-	.long	1068150514
-	.long	893105198
-	.long	1025571866
-	.long	346013696
-	.long	1068012714
-	.long	3495569021
-	.long	3172563349
-	.long	4074029056
-	.long	1067875476
-	.long	3961106338
-	.long	3171065595
-	.long	3559784448
-	.long	1067738798
-	.long	1975385384
-	.long	3173783155
-	.long	797769728
-	.long	1067602675
-	.long	3760305787
-	.long	1026047642
-	.long	2313633792
-	.long	1067467101
-	.long	1559353171
-	.long	1023480256
-	.long	3960766464
-	.long	1067213778
-	.long	1067365107
-	.long	1025865926
-	.long	684261376
-	.long	1066944805
-	.long	844762164
-	.long	3173687482
-	.long	630718464
-	.long	1066676905
-	.long	2458269694
-	.long	1024033081
-	.long	1486061568
-	.long	1066410070
-	.long	115537874
-	.long	3173243995
-	.long	2743664640
-	.long	1065886792
-	.long	3665098304
-	.long	3173471607
-	.long	1971912704
-	.long	1065357333
-	.long	2577214440
-	.long	3171993451
-	.long	1498939392
-	.long	1064306693
-	.long	3409036923
-	.long	1025599151
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	4277811200
-	.long	1067855426
-	.long	2479318832
-	.long	1022292823
-	.long	2454267026
-	.long	1069697316
-	.long	0
-	.long	3218079744
-	.long	1030730101
-	.long	3217380702
-	.long	1431655765
-	.long	1070945621
-	.long	2576980378
-	.long	1070176665
-	.long	0
-	.long	3219128320
-	.long	0
-	.long	4294959104
-	.long	0
-	.long	4294959104
-	.type	static_const_table,@object
-	.size	static_const_table,2144
-	.data
-	.section .note.GNU-stack, ""
-# End
diff --git a/libm/x86/e_pow.S b/libm/x86/e_pow.S
deleted file mode 100644
index 43e30d8..0000000
--- a/libm/x86/e_pow.S
+++ /dev/null
@@ -1,4277 +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)
-//
-//    log2(x) calculation:
-//
-//    Get B~1/mx based on the output of rcpps instruction (B0)
-//    B = int((B0*LH*2^9+0.5))/2^9
-//    LH is a short approximation for log2(e)
-//
-//    Reduced argument, scaled by LH:
-//                r=B*mx-LH (computed accurately in high and low parts)
-//
-//    log2(x) result:  k - log2(B) + p(r)
-//             p(r) is a degree 8 polynomial
-//             -log2(B) read from data table (high, low parts)
-//             log2(x) is formed from high and low parts
-//    For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
-//    based om the same table design is performed.
-//
-//   Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
-//   to filter out all potential OF/UF cases.
-//   exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
-//   polynomial
-//
-// Special cases:
-//  pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd 
-//  integer < 0.
-//  pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and 
-//  not an odd integer.
-//  pow(-0,y) = -0 for y an odd integer > 0.
-//  pow(-0,y) = +0 for y > 0 and not an odd integer.
-//  pow(-1,-INF) = 1.
-//  pow(+1,y) = 1 for any y, even a NaN.
-//  pow(x,-0) = 1 for any x, even a NaN.
-//  pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
-//  finite non-integer y.
-//  pow(x,-INF) = +INF for |x|<1.
-//  pow(x,-INF) = +0 for |x|>1.
-//  pow(x,+INF) = +0 for |x|<1.
-//  pow(x,+INF) = +INF for |x|>1.
-//  pow(-INF,y) = -0 for y an odd integer < 0.
-//  pow(-INF,y) = +0 for y < 0 and not an odd integer.
-//  pow(-INF,y) = -INF for y an odd integer > 0.
-//  pow(-INF,y) = +INF for y > 0 and not an odd integer.
-//  pow(+INF,y) = +0 for y <0.
-//  pow(+INF,y) = +INF for y >0.
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  static_func
-        .text
-        .align __bionic_asm_align
-        .type static_func, @function
-static_func:
-..B1.1:
-        call      ..L2
-..L2:
-        popl      %eax
-        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
-        lea       static_const_table@GOTOFF(%eax), %eax
-        ret
-        .size   static_func,.-static_func
-# -- End  static_func
-
-# -- Begin  pow
-ENTRY(pow)
-# parameter 1: 8 + %ebp
-# parameter 2: 16 + %ebp
-..B2.1:
-..B2.2:
-        pushl     %ebp
-        movl      %esp, %ebp
-        subl      $120, %esp
-        movl      %ebx, 64(%esp)
-        call      static_func
-        movl      %eax, %ebx
-        movsd     128(%esp), %xmm0
-        movsd     136(%esp), %xmm1
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        movl      $1069088768, %ecx
-        movd      %ecx, %xmm7
-        movsd     %xmm1, 16(%esp)
-        xorpd     %xmm1, %xmm1
-        movl      $30704, %edx
-        pinsrw    $3, %edx, %xmm1
-        movsd     %xmm0, 8(%esp)
-        movapd    %xmm0, %xmm3
-        movl      $8192, %edx
-        movd      %edx, %xmm4
-        movapd    8240(%ebx), %xmm6
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        psllq     $5, %xmm0
-        movsd     8256(%ebx), %xmm2
-        psrlq     $34, %xmm0
-        movl      %eax, %edx
-        andl      $32752, %edx
-        subl      $16368, %edx
-        movl      %edx, %ecx
-        sarl      $31, %edx
-        addl      %edx, %ecx
-        xorl      %edx, %ecx
-        rcpss     %xmm0, %xmm0
-        psllq     $12, %xmm3
-        addl      $16, %ecx
-        bsr       %ecx, %ecx
-        psrlq     $12, %xmm3
-        movl      %esi, 24(%esp)
-        subl      $16, %eax
-        cmpl      $32736, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-        movl      $0, %esi
-.L_2TAG_PACKET_1.0.2:
-        mulss     %xmm7, %xmm0
-        movl      $-1, %edx
-        subl      $4, %ecx
-        shll      %cl, %edx
-        movd      %edx, %xmm5
-        orpd      %xmm1, %xmm3
-        subl      $16351, %eax
-        cmpl      $1, %eax
-        jbe       .L_2TAG_PACKET_2.0.2
-        paddd     %xmm4, %xmm0
-        psllq     $32, %xmm5
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm3, %xmm5
-.L_2TAG_PACKET_3.0.2:
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm3
-        subl      $1, %eax
-        sarl      $4, %eax
-        cvtsi2sdl %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-.L_2TAG_PACKET_4.0.2:
-        mulsd     %xmm0, %xmm3
-        movapd    8272(%ebx), %xmm1
-        subsd     %xmm2, %xmm5
-        movapd    8288(%ebx), %xmm4
-        movl      %eax, %ecx
-        sarl      $31, %eax
-        addl      %eax, %ecx
-        xorl      %ecx, %eax
-        addl      $1, %eax
-        bsr       %eax, %eax
-        unpcklpd  %xmm3, %xmm5
-        movapd    8304(%ebx), %xmm6
-        addsd     %xmm5, %xmm3
-        andl      $16760832, %edx
-        shrl      $10, %edx
-        addpd     -3616(%ebx,%edx), %xmm5
-        movapd    8320(%ebx), %xmm0
-        pshufd    $68, %xmm3, %xmm2
-        mulsd     %xmm3, %xmm3
-        mulpd     %xmm2, %xmm1
-        mulpd     %xmm2, %xmm4
-        addsd     %xmm7, %xmm5
-        mulsd     %xmm3, %xmm2
-        addpd     %xmm1, %xmm6
-        mulsd     %xmm3, %xmm3
-        addpd     %xmm4, %xmm0
-        movsd     16(%esp), %xmm1
-        movzwl    22(%esp), %ecx
-        pshufd    $238, %xmm5, %xmm7
-        movsd     8368(%ebx), %xmm4
-        mulpd     %xmm2, %xmm6
-        pshufd    $68, %xmm3, %xmm3
-        mulpd     %xmm2, %xmm0
-        shll      $4, %eax
-        subl      $15872, %eax
-        andl      $32752, %ecx
-        addl      %ecx, %eax
-        mulpd     %xmm6, %xmm3
-        cmpl      $624, %eax
-        jae       .L_2TAG_PACKET_5.0.2
-        xorpd     %xmm6, %xmm6
-        movl      $17080, %edx
-        pinsrw    $3, %edx, %xmm6
-        movapd    %xmm1, %xmm2
-        andpd     %xmm1, %xmm4
-        subsd     %xmm4, %xmm1
-        mulsd     %xmm5, %xmm4
-        addsd     %xmm7, %xmm0
-        mulsd     %xmm5, %xmm1
-        movapd    %xmm6, %xmm7
-        addsd     %xmm4, %xmm6
-        addpd     %xmm0, %xmm3
-        movd      %xmm6, %edx
-        subsd     %xmm7, %xmm6
-        pshufd    $238, %xmm3, %xmm0
-        subsd     %xmm6, %xmm4
-        addsd     %xmm3, %xmm0
-        movl      %edx, %ecx
-        andl      $255, %edx
-        addl      %edx, %edx
-        movapd    8384(%ebx,%edx,8), %xmm5
-        addsd     %xmm1, %xmm4
-        mulsd     %xmm0, %xmm2
-        movapd    12480(%ebx), %xmm7
-        movapd    12496(%ebx), %xmm3
-        shll      $12, %ecx
-        xorl      %esi, %ecx
-        andl      $-1048576, %ecx
-        movd      %ecx, %xmm6
-        addsd     %xmm4, %xmm2
-        movsd     12512(%ebx), %xmm1
-        pshufd    $68, %xmm2, %xmm0
-        pshufd    $68, %xmm2, %xmm4
-        mulpd     %xmm0, %xmm0
-        movl      24(%esp), %esi
-        mulpd     %xmm4, %xmm7
-        pshufd    $17, %xmm6, %xmm6
-        mulsd     %xmm2, %xmm1
-        mulsd     %xmm0, %xmm0
-        paddd     %xmm6, %xmm5
-        addpd     %xmm7, %xmm3
-        mulsd     %xmm5, %xmm1
-        pshufd    $238, %xmm5, %xmm6
-        mulpd     %xmm3, %xmm0
-        addsd     %xmm6, %xmm1
-        pshufd    $238, %xmm0, %xmm3
-        mulsd     %xmm5, %xmm0
-        mulsd     %xmm5, %xmm3
-        addsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm0
-        addsd     %xmm5, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_7.0.2:
-        movsd     128(%esp), %xmm0
-        movsd     136(%esp), %xmm1
-        mulsd     %xmm1, %xmm0
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_0.0.2:
-        addl      $16, %eax
-        movl      $32752, %edx
-        andl      %eax, %edx
-        cmpl      $32752, %edx
-        je        .L_2TAG_PACKET_8.0.2
-        testl     $32768, %eax
-        jne       .L_2TAG_PACKET_9.0.2
-.L_2TAG_PACKET_10.0.2:
-        movl      16(%esp), %ecx
-        xorl      %edx, %edx
-        testl     %ecx, %ecx
-        movl      $1, %ecx
-        cmovne    %ecx, %edx
-        orl       20(%esp), %edx
-        cmpl      $1072693248, %edx
-        je        .L_2TAG_PACKET_7.0.2
-        movsd     8(%esp), %xmm0
-        movsd     8(%esp), %xmm3
-        movd      %xmm3, %edx
-        psrlq     $32, %xmm3
-        movd      %xmm3, %ecx
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_11.0.2
-        xorpd     %xmm3, %xmm3
-        movl      $18416, %eax
-        pinsrw    $3, %eax, %xmm3
-        mulsd     %xmm3, %xmm0
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        movapd    %xmm0, %xmm3
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        movl      $18416, %ecx
-        psllq     $5, %xmm0
-        movsd     8256(%ebx), %xmm2
-        psrlq     $34, %xmm0
-        rcpss     %xmm0, %xmm0
-        psllq     $12, %xmm3
-        movapd    8240(%ebx), %xmm6
-        psrlq     $12, %xmm3
-        mulss     %xmm7, %xmm0
-        movl      $-1024, %edx
-        movd      %edx, %xmm5
-        orpd      %xmm1, %xmm3
-        paddd     %xmm4, %xmm0
-        psllq     $32, %xmm5
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm3, %xmm5
-        movl      $0, %esi
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm3
-        andl      $32752, %eax
-        subl      $18416, %eax
-        sarl      $4, %eax
-        cvtsi2sdl %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_12.0.2:
-        movl      16(%esp), %ecx
-        xorl      %edx, %edx
-        testl     %ecx, %ecx
-        movl      $1, %ecx
-        cmovne    %ecx, %edx
-        orl       20(%esp), %edx
-        cmpl      $1072693248, %edx
-        je        .L_2TAG_PACKET_7.0.2
-        movsd     8(%esp), %xmm0
-        movsd     8(%esp), %xmm3
-        movd      %xmm3, %edx
-        psrlq     $32, %xmm3
-        movd      %xmm3, %ecx
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_11.0.2
-        xorpd     %xmm3, %xmm3
-        movl      $18416, %eax
-        pinsrw    $3, %eax, %xmm3
-        mulsd     %xmm3, %xmm0
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        movapd    %xmm0, %xmm3
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        movl      $18416, %ecx
-        psllq     $5, %xmm0
-        movsd     8256(%ebx), %xmm2
-        psrlq     $34, %xmm0
-        rcpss     %xmm0, %xmm0
-        psllq     $12, %xmm3
-        movapd    8240(%ebx), %xmm6
-        psrlq     $12, %xmm3
-        mulss     %xmm7, %xmm0
-        movl      $-1024, %edx
-        movd      %edx, %xmm5
-        orpd      %xmm1, %xmm3
-        paddd     %xmm4, %xmm0
-        psllq     $32, %xmm5
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm3, %xmm5
-        movl      $-2147483648, %esi
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm3
-        andl      $32752, %eax
-        subl      $18416, %eax
-        sarl      $4, %eax
-        cvtsi2sdl %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
-        cmpl      $0, %eax
-        jl        .L_2TAG_PACKET_13.0.2
-        cmpl      $736, %eax
-        jae       .L_2TAG_PACKET_14.0.2
-.L_2TAG_PACKET_15.0.2:
-        addsd     %xmm7, %xmm0
-        movsd     12544(%ebx), %xmm2
-        addpd     %xmm0, %xmm3
-        xorpd     %xmm6, %xmm6
-        movl      $17080, %eax
-        pinsrw    $3, %eax, %xmm6
-        pshufd    $238, %xmm3, %xmm0
-        addsd     %xmm3, %xmm0
-        movapd    %xmm5, %xmm3
-        addsd     %xmm0, %xmm5
-        movapd    %xmm2, %xmm4
-        subsd     %xmm5, %xmm3
-        movapd    %xmm5, %xmm7
-        andpd     %xmm2, %xmm5
-        movapd    %xmm1, %xmm2
-        andpd     %xmm1, %xmm4
-        subsd     %xmm5, %xmm7
-        addsd     %xmm3, %xmm0
-        subsd     %xmm4, %xmm1
-        mulsd     %xmm5, %xmm4
-        addsd     %xmm7, %xmm0
-        mulsd     %xmm0, %xmm2
-        movapd    %xmm6, %xmm7
-        mulsd     %xmm5, %xmm1
-        addsd     %xmm4, %xmm6
-        movd      %xmm6, %eax
-        subsd     %xmm7, %xmm6
-        addsd     %xmm1, %xmm2
-        movapd    12480(%ebx), %xmm7
-        movapd    12496(%ebx), %xmm3
-        subsd     %xmm6, %xmm4
-        pextrw    $3, %xmm6, %edx
-        movl      %eax, %ecx
-        andl      $255, %eax
-        addl      %eax, %eax
-        movapd    8384(%ebx,%eax,8), %xmm5
-        addsd     %xmm4, %xmm2
-        sarl      $8, %ecx
-        movl      %ecx, %eax
-        sarl      $1, %ecx
-        subl      %ecx, %eax
-        shll      $20, %ecx
-        xorl      %esi, %ecx
-        movd      %ecx, %xmm6
-        movsd     12512(%ebx), %xmm1
-        andl      $32767, %edx
-        cmpl      $16529, %edx
-        ja        .L_2TAG_PACKET_14.0.2
-        pshufd    $68, %xmm2, %xmm0
-        pshufd    $68, %xmm2, %xmm4
-        mulpd     %xmm0, %xmm0
-        mulpd     %xmm4, %xmm7
-        pshufd    $17, %xmm6, %xmm6
-        mulsd     %xmm2, %xmm1
-        mulsd     %xmm0, %xmm0
-        paddd     %xmm6, %xmm5
-        addpd     %xmm7, %xmm3
-        mulsd     %xmm5, %xmm1
-        pshufd    $238, %xmm5, %xmm6
-        mulpd     %xmm3, %xmm0
-        addsd     %xmm6, %xmm1
-        pshufd    $238, %xmm0, %xmm3
-        mulsd     %xmm5, %xmm0
-        mulsd     %xmm5, %xmm3
-        shll      $4, %eax
-        xorpd     %xmm4, %xmm4
-        addl      $16368, %eax
-        pinsrw    $3, %eax, %xmm4
-        addsd     %xmm1, %xmm0
-        movl      24(%esp), %esi
-        addsd     %xmm3, %xmm0
-        movapd    %xmm0, %xmm1
-        addsd     %xmm5, %xmm0
-        mulsd     %xmm4, %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        je        .L_2TAG_PACKET_16.0.2
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_17.0.2
-.L_2TAG_PACKET_18.0.2:
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_8.0.2:
-        movsd     16(%esp), %xmm1
-        movsd     8(%esp), %xmm0
-        movapd    %xmm0, %xmm2
-        movd      %xmm2, %eax
-        psrlq     $20, %xmm2
-        movd      %xmm2, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_19.0.2
-        addsd     %xmm0, %xmm0
-        movd      %xmm1, %eax
-        psrlq     $32, %xmm1
-        movd      %xmm1, %edx
-        movl      %edx, %ecx
-        addl      %edx, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_20.0.2
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_20.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        movl      $29, %edx
-        jmp       .L_2TAG_PACKET_21.0.2
-.L_2TAG_PACKET_22.0.2:
-        movsd     16(%esp), %xmm0
-        addpd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_19.0.2:
-        movd      %xmm1, %eax
-        movapd    %xmm1, %xmm2
-        psrlq     $32, %xmm1
-        movd      %xmm1, %edx
-        movl      %edx, %ecx
-        addl      %edx, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_23.0.2
-        pextrw    $3, %xmm2, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %eax
-        jne       .L_2TAG_PACKET_24.0.2
-        movd      %xmm2, %eax
-        psrlq     $20, %xmm2
-        movd      %xmm2, %edx
-        orl       %edx, %eax
-        jne       .L_2TAG_PACKET_22.0.2
-.L_2TAG_PACKET_24.0.2:
-        pextrw    $3, %xmm0, %eax
-        testl     $32768, %eax
-        jne       .L_2TAG_PACKET_25.0.2
-        testl     $-2147483648, %ecx
-        jne       .L_2TAG_PACKET_26.0.2
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_27.0.2:
-        movsd     16(%esp), %xmm1
-        movd      %xmm1, %eax
-        testl     $1, %eax
-        jne       .L_2TAG_PACKET_28.0.2
-        testl     $2, %eax
-        jne       .L_2TAG_PACKET_29.0.2
-        jmp       .L_2TAG_PACKET_28.0.2
-.L_2TAG_PACKET_25.0.2:
-        shrl      $20, %ecx
-        andl      $2047, %ecx
-        cmpl      $1075, %ecx
-        ja        .L_2TAG_PACKET_28.0.2
-        je        .L_2TAG_PACKET_30.0.2
-        cmpl      $1074, %ecx
-        ja        .L_2TAG_PACKET_27.0.2
-        cmpl      $1023, %ecx
-        jb        .L_2TAG_PACKET_28.0.2
-        movsd     16(%esp), %xmm1
-        movl      $17208, %eax
-        xorpd     %xmm3, %xmm3
-        pinsrw    $3, %eax, %xmm3
-        movapd    %xmm3, %xmm4
-        addsd     %xmm1, %xmm3
-        subsd     %xmm3, %xmm4
-        addsd     %xmm4, %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        jne       .L_2TAG_PACKET_28.0.2
-        movd      %xmm3, %eax
-        andl      $1, %eax
-        je        .L_2TAG_PACKET_28.0.2
-.L_2TAG_PACKET_29.0.2:
-        movsd     16(%esp), %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32768, %eax
-        je        .L_2TAG_PACKET_18.0.2
-        xorpd     %xmm0, %xmm0
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_28.0.2:
-        movsd     16(%esp), %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32768, %eax
-        jne       .L_2TAG_PACKET_26.0.2
-.L_2TAG_PACKET_31.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_30.0.2:
-        movsd     16(%esp), %xmm1
-        movd      %xmm1, %eax
-        andl      $1, %eax
-        je        .L_2TAG_PACKET_28.0.2
-        jmp       .L_2TAG_PACKET_29.0.2
-.L_2TAG_PACKET_32.0.2:
-        movd      %xmm1, %eax
-        psrlq     $20, %xmm1
-        movd      %xmm1, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_33.0.2
-        movsd     16(%esp), %xmm0
-        addsd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_33.0.2:
-        movsd     8(%esp), %xmm0
-        pextrw    $3, %xmm0, %eax
-        cmpl      $49136, %eax
-        jne       .L_2TAG_PACKET_34.0.2
-        movd      %xmm0, %ecx
-        psrlq     $20, %xmm0
-        movd      %xmm0, %edx
-        orl       %edx, %ecx
-        jne       .L_2TAG_PACKET_34.0.2
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_34.0.2:
-        movsd     16(%esp), %xmm1
-        andl      $32752, %eax
-        subl      $16368, %eax
-        pextrw    $3, %xmm1, %edx
-        xorpd     %xmm0, %xmm0
-        xorl      %edx, %eax
-        andl      $32768, %eax
-        jne       .L_2TAG_PACKET_18.0.2
-        movl      $32752, %ecx
-        pinsrw    $3, %ecx, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_35.0.2:
-        movd      %xmm1, %eax
-        cmpl      $17184, %edx
-        ja        .L_2TAG_PACKET_36.0.2
-        testl     $1, %eax
-        jne       .L_2TAG_PACKET_37.0.2
-        testl     $2, %eax
-        je        .L_2TAG_PACKET_38.0.2
-        jmp       .L_2TAG_PACKET_39.0.2
-.L_2TAG_PACKET_36.0.2:
-        testl     $1, %eax
-        je        .L_2TAG_PACKET_38.0.2
-        jmp       .L_2TAG_PACKET_39.0.2
-.L_2TAG_PACKET_9.0.2:
-        movsd     8(%esp), %xmm2
-        movd      %xmm2, %eax
-        psrlq     $31, %xmm2
-        movd      %xmm2, %ecx
-        orl       %ecx, %eax
-        je        .L_2TAG_PACKET_11.0.2
-        movsd     16(%esp), %xmm1
-        pextrw    $3, %xmm1, %edx
-        movd      %xmm1, %eax
-        movapd    %xmm1, %xmm2
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        addl      %ecx, %ecx
-        orl       %eax, %ecx
-        je        .L_2TAG_PACKET_40.0.2
-        andl      $32752, %edx
-        cmpl      $32752, %edx
-        je        .L_2TAG_PACKET_32.0.2
-        cmpl      $17200, %edx
-        ja        .L_2TAG_PACKET_38.0.2
-        cmpl      $17184, %edx
-        jae       .L_2TAG_PACKET_35.0.2
-        cmpl      $16368, %edx
-        jb        .L_2TAG_PACKET_37.0.2
-        movl      $17208, %eax
-        xorpd     %xmm2, %xmm2
-        pinsrw    $3, %eax, %xmm2
-        movapd    %xmm2, %xmm4
-        addsd     %xmm1, %xmm2
-        subsd     %xmm2, %xmm4
-        addsd     %xmm4, %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32767, %eax
-        jne       .L_2TAG_PACKET_37.0.2
-        movd      %xmm2, %eax
-        andl      $1, %eax
-        je        .L_2TAG_PACKET_38.0.2
-.L_2TAG_PACKET_39.0.2:
-        xorpd     %xmm1, %xmm1
-        movl      $30704, %edx
-        pinsrw    $3, %edx, %xmm1
-        movsd     8256(%ebx), %xmm2
-        movsd     8(%esp), %xmm4
-        pextrw    $3, %xmm4, %eax
-        movl      $8192, %edx
-        movd      %edx, %xmm4
-        andl      $32767, %eax
-        subl      $16, %eax
-        jl        .L_2TAG_PACKET_12.0.2
-        movl      %eax, %edx
-        andl      $32752, %edx
-        subl      $16368, %edx
-        movl      %edx, %ecx
-        sarl      $31, %edx
-        addl      %edx, %ecx
-        xorl      %edx, %ecx
-        addl      $16, %ecx
-        bsr       %ecx, %ecx
-        movl      $-2147483648, %esi
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_37.0.2:
-        xorpd     %xmm1, %xmm1
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm1
-        xorpd     %xmm0, %xmm0
-        mulsd     %xmm1, %xmm0
-        movl      $28, %edx
-        jmp       .L_2TAG_PACKET_21.0.2
-.L_2TAG_PACKET_38.0.2:
-        xorpd     %xmm1, %xmm1
-        movl      $30704, %edx
-        pinsrw    $3, %edx, %xmm1
-        movsd     8256(%ebx), %xmm2
-        movsd     8(%esp), %xmm4
-        pextrw    $3, %xmm4, %eax
-        movl      $8192, %edx
-        movd      %edx, %xmm4
-        andl      $32767, %eax
-        subl      $16, %eax
-        jl        .L_2TAG_PACKET_10.0.2
-        movl      %eax, %edx
-        andl      $32752, %edx
-        subl      $16368, %edx
-        movl      %edx, %ecx
-        sarl      $31, %edx
-        addl      %edx, %ecx
-        xorl      %edx, %ecx
-        addl      $16, %ecx
-        bsr       %ecx, %ecx
-        movl      $0, %esi
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_23.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_26.0.2:
-        xorpd     %xmm0, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_13.0.2:
-        addl      $384, %eax
-        cmpl      $0, %eax
-        jl        .L_2TAG_PACKET_41.0.2
-        mulsd     %xmm1, %xmm5
-        addsd     %xmm7, %xmm0
-        shrl      $31, %esi
-        addpd     %xmm0, %xmm3
-        pshufd    $238, %xmm3, %xmm0
-        addsd     %xmm0, %xmm3
-        movsd     12528(%ebx,%esi,8), %xmm4
-        mulsd     %xmm3, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        shll      $15, %esi
-        orl       %esi, %eax
-        pinsrw    $3, %eax, %xmm0
-        addsd     %xmm1, %xmm5
-        movl      24(%esp), %esi
-        mulsd     %xmm4, %xmm5
-        addsd     %xmm5, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_41.0.2:
-        movl      24(%esp), %esi
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_40.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_42.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        movl      $26, %edx
-        jmp       .L_2TAG_PACKET_21.0.2
-.L_2TAG_PACKET_11.0.2:
-        movsd     16(%esp), %xmm1
-        movapd    %xmm1, %xmm2
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %eax
-        jne       .L_2TAG_PACKET_43.0.2
-        movd      %xmm2, %eax
-        psrlq     $20, %xmm2
-        movd      %xmm2, %edx
-        orl       %edx, %eax
-        jne       .L_2TAG_PACKET_22.0.2
-.L_2TAG_PACKET_43.0.2:
-        movd      %xmm1, %eax
-        psrlq     $32, %xmm1
-        movd      %xmm1, %edx
-        movl      %edx, %ecx
-        addl      %edx, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_42.0.2
-        shrl      $21, %edx
-        cmpl      $1075, %edx
-        ja        .L_2TAG_PACKET_44.0.2
-        je        .L_2TAG_PACKET_45.0.2
-        cmpl      $1023, %edx
-        jb        .L_2TAG_PACKET_44.0.2
-        movsd     16(%esp), %xmm1
-        movl      $17208, %eax
-        xorpd     %xmm3, %xmm3
-        pinsrw    $3, %eax, %xmm3
-        movapd    %xmm3, %xmm4
-        addsd     %xmm1, %xmm3
-        subsd     %xmm3, %xmm4
-        addsd     %xmm4, %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        jne       .L_2TAG_PACKET_44.0.2
-        movd      %xmm3, %eax
-        andl      $1, %eax
-        je        .L_2TAG_PACKET_44.0.2
-.L_2TAG_PACKET_46.0.2:
-        movsd     8(%esp), %xmm0
-        testl     $-2147483648, %ecx
-        jne       .L_2TAG_PACKET_47.0.2
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_45.0.2:
-        movsd     16(%esp), %xmm1
-        movd      %xmm1, %eax
-        testl     $1, %eax
-        jne       .L_2TAG_PACKET_46.0.2
-.L_2TAG_PACKET_44.0.2:
-        testl     $-2147483648, %ecx
-        je        .L_2TAG_PACKET_26.0.2
-        xorpd     %xmm0, %xmm0
-.L_2TAG_PACKET_47.0.2:
-        movl      $16368, %eax
-        xorpd     %xmm1, %xmm1
-        pinsrw    $3, %eax, %xmm1
-        divsd     %xmm0, %xmm1
-        movapd    %xmm1, %xmm0
-        movl      $27, %edx
-        jmp       .L_2TAG_PACKET_21.0.2
-.L_2TAG_PACKET_14.0.2:
-        movsd     8(%esp), %xmm2
-        movsd     16(%esp), %xmm6
-        pextrw    $3, %xmm2, %eax
-        pextrw    $3, %xmm6, %edx
-        movl      $32752, %ecx
-        andl      %edx, %ecx
-        cmpl      $32752, %ecx
-        je        .L_2TAG_PACKET_48.0.2
-        andl      $32752, %eax
-        subl      $16368, %eax
-        xorl      %eax, %edx
-        testl     $32768, %edx
-        jne       .L_2TAG_PACKET_49.0.2
-.L_2TAG_PACKET_50.0.2:
-        movl      $32736, %eax
-        pinsrw    $3, %eax, %xmm0
-        shrl      $16, %esi
-        orl       %esi, %eax
-        pinsrw    $3, %eax, %xmm1
-        movl      24(%esp), %esi
-        mulsd     %xmm1, %xmm0
-.L_2TAG_PACKET_17.0.2:
-        movl      $24, %edx
-.L_2TAG_PACKET_21.0.2:
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_49.0.2:
-        movl      $16, %eax
-        pinsrw    $3, %eax, %xmm0
-        mulsd     %xmm0, %xmm0
-        testl     $-2147483648, %esi
-        je        .L_2TAG_PACKET_51.0.2
-        movsd     12560(%ebx), %xmm2
-        xorpd     %xmm2, %xmm0
-.L_2TAG_PACKET_51.0.2:
-        movl      24(%esp), %esi
-        movl      $25, %edx
-        jmp       .L_2TAG_PACKET_21.0.2
-.L_2TAG_PACKET_16.0.2:
-        pextrw    $3, %xmm5, %ecx
-        pextrw    $3, %xmm4, %edx
-        movl      $-1, %eax
-        andl      $32752, %ecx
-        subl      $16368, %ecx
-        andl      $32752, %edx
-        addl      %ecx, %edx
-        movl      $-31, %ecx
-        sarl      $4, %edx
-        subl      %edx, %ecx
-        jle       .L_2TAG_PACKET_52.0.2
-        cmpl      $20, %ecx
-        ja        .L_2TAG_PACKET_53.0.2
-        shll      %cl, %eax
-.L_2TAG_PACKET_52.0.2:
-        movd      %eax, %xmm0
-        psllq     $32, %xmm0
-        andpd     %xmm5, %xmm0
-        subsd     %xmm0, %xmm5
-        addsd     %xmm1, %xmm5
-        mulsd     %xmm4, %xmm0
-        mulsd     %xmm4, %xmm5
-        addsd     %xmm5, %xmm0
-.L_2TAG_PACKET_53.0.2:
-        movl      $25, %edx
-        jmp       .L_2TAG_PACKET_21.0.2
-.L_2TAG_PACKET_2.0.2:
-        movzwl    22(%esp), %ecx
-        movl      $-2147483648, %edx
-        movd      %edx, %xmm1
-        xorpd     %xmm7, %xmm7
-        paddd     %xmm4, %xmm0
-        psllq     $32, %xmm5
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        paddq     %xmm3, %xmm1
-        andpd     %xmm1, %xmm5
-        andl      $32752, %ecx
-        cmpl      $16560, %ecx
-        jb        .L_2TAG_PACKET_3.0.2
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm3
-        addl      $16351, %eax
-        shrl      $4, %eax
-        subl      $1022, %eax
-        cvtsi2sdl %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-        movsd     (%ebx), %xmm4
-        mulsd     %xmm0, %xmm3
-        movsd     (%ebx), %xmm6
-        subsd     %xmm2, %xmm5
-        movsd     8(%ebx), %xmm1
-        pshufd    $68, %xmm3, %xmm2
-        unpcklpd  %xmm3, %xmm5
-        addsd     %xmm5, %xmm3
-        movsd     8(%ebx), %xmm0
-        andl      $16760832, %edx
-        shrl      $10, %edx
-        addpd     -3616(%ebx,%edx), %xmm7
-        mulsd     %xmm5, %xmm4
-        mulsd     %xmm5, %xmm0
-        mulsd     %xmm2, %xmm6
-        mulsd     %xmm2, %xmm1
-        movapd    %xmm5, %xmm2
-        mulsd     %xmm5, %xmm4
-        addsd     %xmm0, %xmm5
-        movapd    %xmm7, %xmm0
-        addsd     %xmm3, %xmm2
-        addsd     %xmm5, %xmm7
-        mulsd     %xmm2, %xmm6
-        subsd     %xmm7, %xmm0
-        movapd    %xmm7, %xmm2
-        addsd     %xmm4, %xmm7
-        addsd     %xmm5, %xmm0
-        subsd     %xmm7, %xmm2
-        addsd     %xmm2, %xmm4
-        pshufd    $238, %xmm5, %xmm2
-        movapd    %xmm7, %xmm5
-        addsd     %xmm2, %xmm7
-        addsd     %xmm0, %xmm4
-        movapd    8272(%ebx), %xmm0
-        subsd     %xmm7, %xmm5
-        addsd     %xmm4, %xmm6
-        movapd    %xmm7, %xmm4
-        addsd     %xmm2, %xmm5
-        addsd     %xmm1, %xmm7
-        movapd    8336(%ebx), %xmm2
-        subsd     %xmm7, %xmm4
-        addsd     %xmm5, %xmm6
-        addsd     %xmm1, %xmm4
-        pshufd    $238, %xmm7, %xmm5
-        movapd    %xmm7, %xmm1
-        addsd     %xmm5, %xmm7
-        subsd     %xmm7, %xmm1
-        addsd     %xmm5, %xmm1
-        movapd    8352(%ebx), %xmm5
-        pshufd    $68, %xmm3, %xmm3
-        addsd     %xmm4, %xmm6
-        addsd     %xmm1, %xmm6
-        movapd    8304(%ebx), %xmm1
-        mulpd     %xmm3, %xmm0
-        mulpd     %xmm3, %xmm2
-        pshufd    $68, %xmm3, %xmm4
-        mulpd     %xmm3, %xmm3
-        addpd     %xmm1, %xmm0
-        addpd     %xmm2, %xmm5
-        mulsd     %xmm3, %xmm4
-        movsd     16(%ebx), %xmm2
-        mulpd     %xmm3, %xmm3
-        movsd     16(%esp), %xmm1
-        movzwl    22(%esp), %ecx
-        mulpd     %xmm4, %xmm0
-        pextrw    $3, %xmm7, %eax
-        mulpd     %xmm4, %xmm5
-        mulpd     %xmm3, %xmm0
-        movsd     8376(%ebx), %xmm4
-        andpd     %xmm7, %xmm2
-        addsd     %xmm6, %xmm5
-        subsd     %xmm2, %xmm7
-        addpd     %xmm0, %xmm5
-        andl      $32752, %eax
-        subl      $16368, %eax
-        andl      $32752, %ecx
-        cmpl      $32752, %ecx
-        je        .L_2TAG_PACKET_48.0.2
-        addl      %eax, %ecx
-        cmpl      $16576, %ecx
-        jae       .L_2TAG_PACKET_54.0.2
-        pshufd    $238, %xmm5, %xmm0
-        andpd     %xmm1, %xmm4
-        movapd    %xmm1, %xmm3
-        addsd     %xmm0, %xmm5
-        subsd     %xmm4, %xmm1
-        xorpd     %xmm6, %xmm6
-        movl      $17080, %edx
-        pinsrw    $3, %edx, %xmm6
-        addsd     %xmm5, %xmm7
-        mulsd     %xmm2, %xmm4
-        mulsd     %xmm2, %xmm1
-        movapd    %xmm6, %xmm5
-        mulsd     %xmm7, %xmm3
-        addsd     %xmm4, %xmm6
-        addsd     %xmm3, %xmm1
-        movapd    12480(%ebx), %xmm7
-        movd      %xmm6, %edx
-        subsd     %xmm5, %xmm6
-        movapd    12496(%ebx), %xmm3
-        movsd     12512(%ebx), %xmm2
-        subsd     %xmm6, %xmm4
-        movl      %edx, %ecx
-        andl      $255, %edx
-        addl      %edx, %edx
-        movapd    8384(%ebx,%edx,8), %xmm5
-        addsd     %xmm1, %xmm4
-        pextrw    $3, %xmm6, %edx
-        shrl      $8, %ecx
-        movl      %ecx, %eax
-        shrl      $1, %ecx
-        subl      %ecx, %eax
-        shll      $20, %ecx
-        movd      %ecx, %xmm6
-        pshufd    $68, %xmm4, %xmm0
-        pshufd    $68, %xmm4, %xmm1
-        mulpd     %xmm0, %xmm0
-        mulpd     %xmm1, %xmm7
-        pshufd    $17, %xmm6, %xmm6
-        mulsd     %xmm4, %xmm2
-        andl      $32767, %edx
-        cmpl      $16529, %edx
-        ja        .L_2TAG_PACKET_14.0.2
-        mulsd     %xmm0, %xmm0
-        paddd     %xmm6, %xmm5
-        addpd     %xmm7, %xmm3
-        mulsd     %xmm5, %xmm2
-        pshufd    $238, %xmm5, %xmm6
-        mulpd     %xmm3, %xmm0
-        addsd     %xmm6, %xmm2
-        pshufd    $238, %xmm0, %xmm3
-        addl      $1023, %eax
-        shll      $20, %eax
-        orl       %esi, %eax
-        movd      %eax, %xmm4
-        mulsd     %xmm5, %xmm0
-        mulsd     %xmm5, %xmm3
-        addsd     %xmm2, %xmm0
-        psllq     $32, %xmm4
-        addsd     %xmm3, %xmm0
-        movapd    %xmm0, %xmm1
-        addsd     %xmm5, %xmm0
-        movl      24(%esp), %esi
-        mulsd     %xmm4, %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        je        .L_2TAG_PACKET_16.0.2
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_17.0.2
-.L_2TAG_PACKET_55.0.2:
-        movsd     %xmm0, (%esp)
-        fldl      (%esp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_48.0.2:
-        movl      24(%esp), %esi
-.L_2TAG_PACKET_56.0.2:
-        movsd     8(%esp), %xmm0
-        movsd     16(%esp), %xmm1
-        addsd     %xmm1, %xmm1
-        xorpd     %xmm2, %xmm2
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm2
-        addsd     %xmm0, %xmm2
-        pextrw    $3, %xmm2, %eax
-        cmpl      $0, %eax
-        je        .L_2TAG_PACKET_18.0.2
-        movd      %xmm1, %edx
-        movapd    %xmm1, %xmm3
-        psrlq     $20, %xmm3
-        movd      %xmm3, %ecx
-        orl       %edx, %ecx
-        je        .L_2TAG_PACKET_57.0.2
-        addsd     %xmm1, %xmm1
-        movapd    %xmm1, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_57.0.2:
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        pextrw    $3, %xmm1, %edx
-        xorpd     %xmm0, %xmm0
-        subl      $16368, %eax
-        xorl      %edx, %eax
-        testl     $32768, %eax
-        jne       .L_2TAG_PACKET_18.0.2
-        movl      $32752, %edx
-        pinsrw    $3, %edx, %xmm0
-        jmp       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_54.0.2:
-        pextrw    $3, %xmm1, %eax
-        pextrw    $3, %xmm2, %ecx
-        xorl      %ecx, %eax
-        testl     $32768, %eax
-        je        .L_2TAG_PACKET_50.0.2
-        jmp       .L_2TAG_PACKET_49.0.2
-.L_2TAG_PACKET_6.0.2:
-        movl      64(%esp), %ebx
-        movl      %ebp, %esp
-        popl      %ebp
-        ret       
-..B2.3:
-END(pow)
-# -- End  pow
-	.section .rodata, "a"
-	.align 16
-	.align 16
-static_const_table:
-	.long	0
-	.long	3218479616
-	.long	0
-	.long	3210587105
-	.long	4160749568
-	.long	4294967295
-	.long	0
-	.long	4294965248
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	536870912
-	.long	1072689162
-	.long	2523013013
-	.long	1046157398
-	.long	3758096384
-	.long	1072685081
-	.long	3851513758
-	.long	3190968952
-	.long	0
-	.long	1072681007
-	.long	2241466466
-	.long	1046044599
-	.long	3221225472
-	.long	1072676937
-	.long	2990928271
-	.long	3193084984
-	.long	3758096384
-	.long	1072672873
-	.long	2905112743
-	.long	3192918576
-	.long	1610612736
-	.long	1072668815
-	.long	3370591264
-	.long	1046051793
-	.long	2147483648
-	.long	1072664762
-	.long	3272361216
-	.long	3193793653
-	.long	3758096384
-	.long	1072660714
-	.long	46546755
-	.long	1043206936
-	.long	3221225472
-	.long	1072656672
-	.long	3017067724
-	.long	3192177962
-	.long	0
-	.long	1072652636
-	.long	3688436631
-	.long	3192814956
-	.long	2684354560
-	.long	1072648604
-	.long	1707461992
-	.long	3193056712
-	.long	2684354560
-	.long	1072644578
-	.long	1188114540
-	.long	3193603086
-	.long	3758096384
-	.long	1072640557
-	.long	3533180564
-	.long	1045459375
-	.long	2684354560
-	.long	1072636542
-	.long	2000337630
-	.long	3193475557
-	.long	2684354560
-	.long	1072632532
-	.long	3698062443
-	.long	3193752766
-	.long	3758096384
-	.long	1072628527
-	.long	3161606138
-	.long	3190532995
-	.long	2147483648
-	.long	1072624528
-	.long	3165265478
-	.long	3193158459
-	.long	1610612736
-	.long	1072620534
-	.long	1600940077
-	.long	3193226777
-	.long	2147483648
-	.long	1072616545
-	.long	1363272552
-	.long	3192614278
-	.long	3758096384
-	.long	1072612561
-	.long	3966209910
-	.long	3191249654
-	.long	2147483648
-	.long	1072608583
-	.long	1093672789
-	.long	3190637330
-	.long	1610612736
-	.long	1072604610
-	.long	1735239357
-	.long	3192753616
-	.long	1610612736
-	.long	1072600642
-	.long	1470665156
-	.long	1045559697
-	.long	2684354560
-	.long	1072596679
-	.long	3840624926
-	.long	1045928953
-	.long	536870912
-	.long	1072592722
-	.long	4259072556
-	.long	3191035622
-	.long	3221225472
-	.long	1072588769
-	.long	3613088753
-	.long	3192165681
-	.long	2147483648
-	.long	1072584822
-	.long	3175234446
-	.long	1039486948
-	.long	1610612736
-	.long	1072580880
-	.long	856576441
-	.long	1045702812
-	.long	2147483648
-	.long	1072576943
-	.long	2253498719
-	.long	3193285334
-	.long	2684354560
-	.long	1072573011
-	.long	1587070728
-	.long	3190801577
-	.long	3758096384
-	.long	1072569084
-	.long	159986317
-	.long	1042519436
-	.long	1073741824
-	.long	1072565163
-	.long	3999541949
-	.long	3192020440
-	.long	2684354560
-	.long	1072561246
-	.long	3281310262
-	.long	1045586786
-	.long	536870912
-	.long	1072557335
-	.long	3775179406
-	.long	1045226055
-	.long	3221225472
-	.long	1072553428
-	.long	643472356
-	.long	3193681786
-	.long	1073741824
-	.long	1072549527
-	.long	248169775
-	.long	1045068977
-	.long	3758096384
-	.long	1072545630
-	.long	307016632
-	.long	1042640932
-	.long	2147483648
-	.long	1072541739
-	.long	3872718526
-	.long	3189781486
-	.long	536870912
-	.long	1072537853
-	.long	969711630
-	.long	3191724732
-	.long	3221225472
-	.long	1072533971
-	.long	4018820394
-	.long	3193189264
-	.long	1073741824
-	.long	1072530095
-	.long	3102233092
-	.long	1045510224
-	.long	3758096384
-	.long	1072526223
-	.long	1029307912
-	.long	3193812776
-	.long	1073741824
-	.long	1072522357
-	.long	984083153
-	.long	1045987403
-	.long	3221225472
-	.long	1072518495
-	.long	4171455401
-	.long	3193084080
-	.long	0
-	.long	1072514639
-	.long	2592660757
-	.long	1046121691
-	.long	1073741824
-	.long	1072510787
-	.long	2964365712
-	.long	1046054453
-	.long	2147483648
-	.long	1072506940
-	.long	3792777877
-	.long	3193704729
-	.long	2147483648
-	.long	1072503098
-	.long	2948536104
-	.long	3192467100
-	.long	1610612736
-	.long	1072499261
-	.long	3836005619
-	.long	1041873166
-	.long	536870912
-	.long	1072495429
-	.long	3124543160
-	.long	1044409168
-	.long	3221225472
-	.long	1072491601
-	.long	286227933
-	.long	1041065990
-	.long	1073741824
-	.long	1072487779
-	.long	2111296776
-	.long	3193604419
-	.long	2147483648
-	.long	1072483961
-	.long	2606822001
-	.long	3192940394
-	.long	2147483648
-	.long	1072480148
-	.long	194696800
-	.long	1046026063
-	.long	1610612736
-	.long	1072476340
-	.long	8535452
-	.long	1046200178
-	.long	536870912
-	.long	1072472537
-	.long	950463625
-	.long	3192731897
-	.long	2147483648
-	.long	1072468738
-	.long	973831566
-	.long	1045683197
-	.long	3221225472
-	.long	1072464944
-	.long	3330435892
-	.long	3190277577
-	.long	3221225472
-	.long	1072461155
-	.long	208692097
-	.long	3193517651
-	.long	1610612736
-	.long	1072457371
-	.long	2113097415
-	.long	1044781749
-	.long	3758096384
-	.long	1072453591
-	.long	1088808936
-	.long	3193716142
-	.long	0
-	.long	1072449817
-	.long	1443002127
-	.long	3193250205
-	.long	3221225472
-	.long	1072446046
-	.long	3967357419
-	.long	1046109477
-	.long	1610612736
-	.long	1072442281
-	.long	3013517861
-	.long	3193159691
-	.long	2147483648
-	.long	1072438520
-	.long	2524586286
-	.long	1046121951
-	.long	1610612736
-	.long	1072434764
-	.long	1476892861
-	.long	1046434731
-	.long	0
-	.long	1072431013
-	.long	3089640950
-	.long	3192305780
-	.long	536870912
-	.long	1072427266
-	.long	3812255529
-	.long	1045730879
-	.long	0
-	.long	1072423524
-	.long	995354762
-	.long	3191528673
-	.long	1610612736
-	.long	1072419786
-	.long	3260567684
-	.long	1046273695
-	.long	2147483648
-	.long	1072416053
-	.long	2738210286
-	.long	3191471516
-	.long	536870912
-	.long	1072412325
-	.long	1931849805
-	.long	1044560405
-	.long	1610612736
-	.long	1072408601
-	.long	358896655
-	.long	1044029237
-	.long	1073741824
-	.long	1072404882
-	.long	2214589842
-	.long	3193202126
-	.long	2684354560
-	.long	1072401167
-	.long	3118097363
-	.long	3192592906
-	.long	2147483648
-	.long	1072397457
-	.long	1835998884
-	.long	1045788247
-	.long	0
-	.long	1072393752
-	.long	1585488319
-	.long	1045289910
-	.long	0
-	.long	1072390051
-	.long	480160949
-	.long	1046030455
-	.long	2684354560
-	.long	1072386354
-	.long	1832959667
-	.long	3193013644
-	.long	2684354560
-	.long	1072382662
-	.long	3611346555
-	.long	1044544210
-	.long	1073741824
-	.long	1072378975
-	.long	2749418734
-	.long	3193712580
-	.long	1073741824
-	.long	1072375292
-	.long	2390043472
-	.long	3191710658
-	.long	3221225472
-	.long	1072371613
-	.long	2828199902
-	.long	1042265217
-	.long	3221225472
-	.long	1072367939
-	.long	569209321
-	.long	3191230982
-	.long	536870912
-	.long	1072364270
-	.long	236159139
-	.long	1046240123
-	.long	536870912
-	.long	1072360605
-	.long	1010656270
-	.long	3193813968
-	.long	1610612736
-	.long	1072356944
-	.long	2409080597
-	.long	1044025029
-	.long	536870912
-	.long	1072353288
-	.long	598419513
-	.long	1043327370
-	.long	1073741824
-	.long	1072349636
-	.long	4105950479
-	.long	1045747958
-	.long	3758096384
-	.long	1072345988
-	.long	343243853
-	.long	3192420172
-	.long	3221225472
-	.long	1072342345
-	.long	2088439530
-	.long	1046172091
-	.long	536870912
-	.long	1072338707
-	.long	4117721107
-	.long	1043882496
-	.long	3758096384
-	.long	1072335072
-	.long	3192032958
-	.long	3192998645
-	.long	3758096384
-	.long	1072331442
-	.long	2366522518
-	.long	1045401957
-	.long	1610612736
-	.long	1072327817
-	.long	3685533141
-	.long	3193701947
-	.long	536870912
-	.long	1072324196
-	.long	1058658672
-	.long	3193572492
-	.long	536870912
-	.long	1072320579
-	.long	166346347
-	.long	1045456348
-	.long	2147483648
-	.long	1072316966
-	.long	2027889772
-	.long	1046349302
-	.long	1073741824
-	.long	1072313358
-	.long	1079497888
-	.long	1044585259
-	.long	1073741824
-	.long	1072309754
-	.long	2189851573
-	.long	1045132990
-	.long	2684354560
-	.long	1072306154
-	.long	2486629386
-	.long	3193613625
-	.long	536870912
-	.long	1072302559
-	.long	1263686579
-	.long	1044789259
-	.long	0
-	.long	1072298968
-	.long	2412061798
-	.long	3191369627
-	.long	536870912
-	.long	1072295381
-	.long	584315716
-	.long	3193144135
-	.long	1610612736
-	.long	1072291798
-	.long	449000738
-	.long	1046330451
-	.long	0
-	.long	1072288220
-	.long	3938320157
-	.long	1044446220
-	.long	3758096384
-	.long	1072284645
-	.long	2949844595
-	.long	3193462371
-	.long	3758096384
-	.long	1072281075
-	.long	2771329642
-	.long	3192121593
-	.long	536870912
-	.long	1072277510
-	.long	3971508621
-	.long	3193002806
-	.long	2147483648
-	.long	1072273948
-	.long	4071942301
-	.long	1044952619
-	.long	536870912
-	.long	1072270391
-	.long	2090502395
-	.long	1044660556
-	.long	0
-	.long	1072266838
-	.long	3657520961
-	.long	3193770938
-	.long	3758096384
-	.long	1072263288
-	.long	1608175110
-	.long	1045543239
-	.long	0
-	.long	1072259744
-	.long	2506924180
-	.long	1045530501
-	.long	1073741824
-	.long	1072256203
-	.long	18238493
-	.long	1046305623
-	.long	3221225472
-	.long	1072252666
-	.long	3862640487
-	.long	3192882407
-	.long	1073741824
-	.long	1072249134
-	.long	3850158761
-	.long	1043656099
-	.long	3758096384
-	.long	1072245605
-	.long	2356524356
-	.long	1045915296
-	.long	3221225472
-	.long	1072242081
-	.long	936497287
-	.long	3193842353
-	.long	2147483648
-	.long	1072238561
-	.long	2840845344
-	.long	1046454771
-	.long	2147483648
-	.long	1072235045
-	.long	3688100713
-	.long	1044895451
-	.long	2684354560
-	.long	1072231533
-	.long	479979913
-	.long	3193842442
-	.long	2684354560
-	.long	1072228025
-	.long	1016321898
-	.long	1046251032
-	.long	3758096384
-	.long	1072224521
-	.long	562232474
-	.long	3191974558
-	.long	536870912
-	.long	1072221022
-	.long	3870512029
-	.long	3193113881
-	.long	1610612736
-	.long	1072217526
-	.long	1239780547
-	.long	3191583604
-	.long	2684354560
-	.long	1072214034
-	.long	2815421327
-	.long	1045873682
-	.long	0
-	.long	1072210547
-	.long	2371009561
-	.long	1041508792
-	.long	1610612736
-	.long	1072207063
-	.long	1304636524
-	.long	3192414284
-	.long	3221225472
-	.long	1072203583
-	.long	210144854
-	.long	3193327333
-	.long	0
-	.long	1072200108
-	.long	1454303272
-	.long	1046360024
-	.long	1610612736
-	.long	1072196636
-	.long	2095757548
-	.long	1044984677
-	.long	3221225472
-	.long	1072193168
-	.long	2027215580
-	.long	3192880933
-	.long	0
-	.long	1072189705
-	.long	214794880
-	.long	1043457954
-	.long	1073741824
-	.long	1072186245
-	.long	884624917
-	.long	1043497079
-	.long	2147483648
-	.long	1072182789
-	.long	2792396634
-	.long	3193171685
-	.long	2684354560
-	.long	1072179337
-	.long	4128995250
-	.long	3192103434
-	.long	2684354560
-	.long	1072175889
-	.long	333866043
-	.long	1046372325
-	.long	3221225472
-	.long	1072172445
-	.long	2194445544
-	.long	3193958905
-	.long	2684354560
-	.long	1072169005
-	.long	2316082269
-	.long	3192041703
-	.long	1610612736
-	.long	1072165569
-	.long	581005057
-	.long	1046322848
-	.long	536870912
-	.long	1072162137
-	.long	3280786513
-	.long	1045457251
-	.long	3221225472
-	.long	1072158708
-	.long	2567093361
-	.long	1044710359
-	.long	1073741824
-	.long	1072155284
-	.long	3740443584
-	.long	1044224237
-	.long	2684354560
-	.long	1072151863
-	.long	3981028272
-	.long	1042596351
-	.long	3758096384
-	.long	1072148446
-	.long	3820011120
-	.long	3191915623
-	.long	0
-	.long	1072145034
-	.long	2946439484
-	.long	3193831276
-	.long	3758096384
-	.long	1072141624
-	.long	3075274422
-	.long	3190132432
-	.long	2684354560
-	.long	1072138219
-	.long	496052167
-	.long	1043619760
-	.long	1073741824
-	.long	1072134818
-	.long	271106589
-	.long	3192265149
-	.long	2684354560
-	.long	1072131420
-	.long	2091955684
-	.long	1044443554
-	.long	3758096384
-	.long	1072128026
-	.long	723240109
-	.long	3191007419
-	.long	3758096384
-	.long	1072124636
-	.long	1748629070
-	.long	1044510075
-	.long	3221225472
-	.long	1072121250
-	.long	3289522046
-	.long	3193095178
-	.long	1610612736
-	.long	1072117868
-	.long	3599052146
-	.long	3193720427
-	.long	3221225472
-	.long	1072114489
-	.long	2446758135
-	.long	3193436303
-	.long	3758096384
-	.long	1072111114
-	.long	1652171097
-	.long	3192137173
-	.long	3221225472
-	.long	1072107743
-	.long	1353007155
-	.long	1044523902
-	.long	1610612736
-	.long	1072104376
-	.long	990601105
-	.long	1046296663
-	.long	3758096384
-	.long	1072101012
-	.long	2228627618
-	.long	3193041040
-	.long	0
-	.long	1072097653
-	.long	812484756
-	.long	3191950723
-	.long	3758096384
-	.long	1072094296
-	.long	817833130
-	.long	3192279242
-	.long	2147483648
-	.long	1072090944
-	.long	3563228521
-	.long	3193810951
-	.long	3221225472
-	.long	1072087595
-	.long	2729108859
-	.long	3190936185
-	.long	3221225472
-	.long	1072084250
-	.long	2249121662
-	.long	3190639690
-	.long	2147483648
-	.long	1072080909
-	.long	4082471745
-	.long	3193929368
-	.long	3758096384
-	.long	1072077571
-	.long	2827323806
-	.long	3193708561
-	.long	3758096384
-	.long	1072074237
-	.long	735866167
-	.long	1042434690
-	.long	2684354560
-	.long	1072070907
-	.long	3240808889
-	.long	3191918422
-	.long	0
-	.long	1072067581
-	.long	466482777
-	.long	3186962221
-	.long	0
-	.long	1072064258
-	.long	1576076296
-	.long	1045849056
-	.long	3221225472
-	.long	1072060938
-	.long	2751923560
-	.long	3191910703
-	.long	0
-	.long	1072057623
-	.long	1908755527
-	.long	1046437515
-	.long	0
-	.long	1072054311
-	.long	3175841411
-	.long	1044572886
-	.long	2684354560
-	.long	1072051002
-	.long	1633258450
-	.long	3192670420
-	.long	3221225472
-	.long	1072047697
-	.long	1867746657
-	.long	1045726209
-	.long	2684354560
-	.long	1072044396
-	.long	338968864
-	.long	3193084662
-	.long	0
-	.long	1072041099
-	.long	1501742471
-	.long	3191742031
-	.long	0
-	.long	1072037805
-	.long	4266775786
-	.long	3192686970
-	.long	2147483648
-	.long	1072034514
-	.long	4249283553
-	.long	1045769728
-	.long	2684354560
-	.long	1072031227
-	.long	2758366873
-	.long	1046402161
-	.long	1610612736
-	.long	1072027944
-	.long	2161186990
-	.long	1044736865
-	.long	2684354560
-	.long	1072024664
-	.long	810300171
-	.long	1045748777
-	.long	2147483648
-	.long	1072021388
-	.long	183688927
-	.long	3191515581
-	.long	3758096384
-	.long	1072018115
-	.long	368874072
-	.long	3192363575
-	.long	3221225472
-	.long	1072014846
-	.long	2459092970
-	.long	1041794640
-	.long	536870912
-	.long	1072011581
-	.long	867488640
-	.long	1046310291
-	.long	536870912
-	.long	1072008319
-	.long	50140871
-	.long	1043327329
-	.long	2684354560
-	.long	1072005060
-	.long	1241902518
-	.long	3192739252
-	.long	2684354560
-	.long	1072001805
-	.long	1027881659
-	.long	3193858388
-	.long	0
-	.long	1071998554
-	.long	38457322
-	.long	1045489179
-	.long	0
-	.long	1071995306
-	.long	3432963337
-	.long	3190969347
-	.long	1610612736
-	.long	1071992061
-	.long	534931792
-	.long	1046302734
-	.long	1610612736
-	.long	1071988820
-	.long	1817895268
-	.long	3192551860
-	.long	3221225472
-	.long	1071985582
-	.long	357237383
-	.long	3191870833
-	.long	2684354560
-	.long	1071982348
-	.long	108262401
-	.long	3193365867
-	.long	3758096384
-	.long	1071979117
-	.long	1964729244
-	.long	1042502249
-	.long	2684354560
-	.long	1071975890
-	.long	2088446957
-	.long	1038010503
-	.long	3221225472
-	.long	1071972666
-	.long	2947239447
-	.long	1046377845
-	.long	1610612736
-	.long	1071969446
-	.long	774932072
-	.long	1046064854
-	.long	2147483648
-	.long	1071966229
-	.long	4080937590
-	.long	3193041284
-	.long	3758096384
-	.long	1071963015
-	.long	2208251454
-	.long	1045945089
-	.long	3221225472
-	.long	1071959805
-	.long	2850924475
-	.long	1045650959
-	.long	0
-	.long	1071956599
-	.long	714040997
-	.long	1046275153
-	.long	3221225472
-	.long	1071953395
-	.long	85533782
-	.long	3192816920
-	.long	3221225472
-	.long	1071950195
-	.long	1252511005
-	.long	1044805706
-	.long	1073741824
-	.long	1071946999
-	.long	2384659038
-	.long	3193391602
-	.long	0
-	.long	1071943806
-	.long	416481813
-	.long	1043730233
-	.long	536870912
-	.long	1071940616
-	.long	1675424499
-	.long	1046348030
-	.long	3221225472
-	.long	1071937429
-	.long	1175989513
-	.long	3193009113
-	.long	2684354560
-	.long	1071934246
-	.long	2400084650
-	.long	3192451713
-	.long	3758096384
-	.long	1071931066
-	.long	1467335692
-	.long	3193350868
-	.long	1610612736
-	.long	1071927890
-	.long	266493801
-	.long	1044954481
-	.long	1073741824
-	.long	1071924717
-	.long	3919093445
-	.long	1046023575
-	.long	2147483648
-	.long	1071921547
-	.long	3017408483
-	.long	1044880828
-	.long	536870912
-	.long	1071918381
-	.long	948849966
-	.long	3193892224
-	.long	3758096384
-	.long	1071915217
-	.long	1870232600
-	.long	1045777228
-	.long	536870912
-	.long	1071912058
-	.long	822381492
-	.long	3193639186
-	.long	2147483648
-	.long	1071908901
-	.long	788243705
-	.long	1044966343
-	.long	1073741824
-	.long	1071905748
-	.long	1344278809
-	.long	1044428545
-	.long	1073741824
-	.long	1071902598
-	.long	172864300
-	.long	1045765608
-	.long	2684354560
-	.long	1071899451
-	.long	211555467
-	.long	3192963574
-	.long	536870912
-	.long	1071896308
-	.long	3373438023
-	.long	1045643168
-	.long	0
-	.long	1071893168
-	.long	2867180960
-	.long	3189945998
-	.long	536870912
-	.long	1071890031
-	.long	36724362
-	.long	3193240584
-	.long	1610612736
-	.long	1071886897
-	.long	2140176984
-	.long	1045945349
-	.long	0
-	.long	1071883767
-	.long	436842360
-	.long	1040712587
-	.long	3758096384
-	.long	1071880639
-	.long	1225147329
-	.long	3193814594
-	.long	3758096384
-	.long	1071877515
-	.long	1586157348
-	.long	3191614322
-	.long	536870912
-	.long	1071874395
-	.long	3329332918
-	.long	1041699791
-	.long	2684354560
-	.long	1071871277
-	.long	1635968041
-	.long	3191783756
-	.long	1073741824
-	.long	1071868163
-	.long	2876158382
-	.long	1046097093
-	.long	1073741824
-	.long	1071865052
-	.long	4267556964
-	.long	3193723000
-	.long	1073741824
-	.long	1071861944
-	.long	195475940
-	.long	1045520795
-	.long	2147483648
-	.long	1071858839
-	.long	2239193514
-	.long	1046478675
-	.long	0
-	.long	1071855738
-	.long	4168275596
-	.long	1044926285
-	.long	2684354560
-	.long	1071852639
-	.long	142514114
-	.long	1045595182
-	.long	2147483648
-	.long	1071849544
-	.long	1943457984
-	.long	3192930015
-	.long	2147483648
-	.long	1071846452
-	.long	202659489
-	.long	3193926317
-	.long	2684354560
-	.long	1071843363
-	.long	2208408789
-	.long	3193857484
-	.long	3758096384
-	.long	1071840277
-	.long	2237297552
-	.long	3192939576
-	.long	1073741824
-	.long	1071837195
-	.long	2726920839
-	.long	1044193954
-	.long	3758096384
-	.long	1071834115
-	.long	2337732207
-	.long	3193611773
-	.long	2147483648
-	.long	1071831039
-	.long	1390088602
-	.long	1044000317
-	.long	1610612736
-	.long	1071827966
-	.long	3806188736
-	.long	3193463913
-	.long	1073741824
-	.long	1071824896
-	.long	1795276560
-	.long	1043671965
-	.long	1073741824
-	.long	1071821829
-	.long	2960792799
-	.long	1046240474
-	.long	2147483648
-	.long	1071818765
-	.long	3350591592
-	.long	3193333939
-	.long	3221225472
-	.long	1071815704
-	.long	408870754
-	.long	3193322854
-	.long	0
-	.long	1071812647
-	.long	4146717132
-	.long	1046063520
-	.long	2147483648
-	.long	1071809592
-	.long	1681114919
-	.long	3192114313
-	.long	0
-	.long	1071806541
-	.long	1098393137
-	.long	3190846732
-	.long	2684354560
-	.long	1071803492
-	.long	2437484983
-	.long	3193448718
-	.long	1073741824
-	.long	1071800447
-	.long	1036809185
-	.long	3192023501
-	.long	0
-	.long	1071797405
-	.long	659668848
-	.long	3193596312
-	.long	3221225472
-	.long	1071794365
-	.long	1112062459
-	.long	3192773376
-	.long	2147483648
-	.long	1071791329
-	.long	4082956335
-	.long	1045830513
-	.long	1610612736
-	.long	1071788296
-	.long	2387089965
-	.long	1045532601
-	.long	1610612736
-	.long	1071785266
-	.long	1522101980
-	.long	3193941957
-	.long	1073741824
-	.long	1071782239
-	.long	2157197585
-	.long	3188193305
-	.long	1073741824
-	.long	1071779215
-	.long	946810220
-	.long	3193223819
-	.long	1073741824
-	.long	1071776194
-	.long	4069942444
-	.long	3193878549
-	.long	536870912
-	.long	1071773176
-	.long	1693463440
-	.long	1046360588
-	.long	536870912
-	.long	1071770161
-	.long	1954543254
-	.long	1046409381
-	.long	1073741824
-	.long	1071767149
-	.long	1050471249
-	.long	3193933095
-	.long	536870912
-	.long	1071764140
-	.long	1256240478
-	.long	1046456865
-	.long	536870912
-	.long	1071761134
-	.long	676764254
-	.long	1046055503
-	.long	536870912
-	.long	1071758131
-	.long	1421032967
-	.long	1044779786
-	.long	536870912
-	.long	1071755131
-	.long	38735992
-	.long	3192766355
-	.long	0
-	.long	1071752134
-	.long	2960669690
-	.long	1044484680
-	.long	3758096384
-	.long	1071749139
-	.long	788707382
-	.long	1045299895
-	.long	3221225472
-	.long	1071746148
-	.long	685689300
-	.long	1040778831
-	.long	2147483648
-	.long	1071743160
-	.long	1170994182
-	.long	1046159174
-	.long	1073741824
-	.long	1071740175
-	.long	64591436
-	.long	1046153849
-	.long	0
-	.long	1071737193
-	.long	2338031659
-	.long	3189997702
-	.long	2684354560
-	.long	1071734213
-	.long	1941624568
-	.long	3186752676
-	.long	536870912
-	.long	1071731237
-	.long	1401255580
-	.long	1046383990
-	.long	2684354560
-	.long	1071728263
-	.long	376888427
-	.long	1045896456
-	.long	536870912
-	.long	1071725293
-	.long	2831424639
-	.long	3193539109
-	.long	1610612736
-	.long	1071722325
-	.long	3303123696
-	.long	1044599415
-	.long	2684354560
-	.long	1071719360
-	.long	1077295329
-	.long	3189877372
-	.long	3221225472
-	.long	1071716398
-	.long	1434061099
-	.long	3184529771
-	.long	3221225472
-	.long	1071713439
-	.long	2104991590
-	.long	1045062074
-	.long	3221225472
-	.long	1071710483
-	.long	722060869
-	.long	3193788526
-	.long	536870912
-	.long	1071704580
-	.long	3928796486
-	.long	1046129020
-	.long	536870912
-	.long	1071698688
-	.long	588844628
-	.long	1045492135
-	.long	2684354560
-	.long	1071692807
-	.long	326739366
-	.long	3193004445
-	.long	1610612736
-	.long	1071686938
-	.long	2456436042
-	.long	1046278169
-	.long	2684354560
-	.long	1071681080
-	.long	2831303512
-	.long	1043670046
-	.long	536870912
-	.long	1071675234
-	.long	607223418
-	.long	1045507322
-	.long	0
-	.long	1071669399
-	.long	4254921332
-	.long	3193290483
-	.long	0
-	.long	1071663575
-	.long	914994333
-	.long	3191263853
-	.long	1073741824
-	.long	1071657762
-	.long	4147050180
-	.long	3193228552
-	.long	2684354560
-	.long	1071651960
-	.long	594554157
-	.long	3193503935
-	.long	0
-	.long	1071646170
-	.long	1062846796
-	.long	1045944331
-	.long	1073741824
-	.long	1071636109
-	.long	2909238893
-	.long	3193436884
-	.long	1073741824
-	.long	1071624572
-	.long	1682918119
-	.long	1042211899
-	.long	1073741824
-	.long	1071613057
-	.long	2419209426
-	.long	1045437062
-	.long	1073741824
-	.long	1071601564
-	.long	2951341321
-	.long	3190193214
-	.long	0
-	.long	1071590093
-	.long	3084900875
-	.long	3192394907
-	.long	1073741824
-	.long	1071578643
-	.long	999567454
-	.long	1046433447
-	.long	2147483648
-	.long	1071567215
-	.long	1570101857
-	.long	3193291160
-	.long	0
-	.long	1071555809
-	.long	1080647881
-	.long	3185154585
-	.long	0
-	.long	1071544424
-	.long	3526309177
-	.long	1044843640
-	.long	2147483648
-	.long	1071533060
-	.long	2213463349
-	.long	3191738930
-	.long	1073741824
-	.long	1071521718
-	.long	1039925195
-	.long	3192618353
-	.long	1073741824
-	.long	1071510397
-	.long	2115757280
-	.long	3193671567
-	.long	1073741824
-	.long	1071499097
-	.long	1188751495
-	.long	3191145560
-	.long	2147483648
-	.long	1071487818
-	.long	3983461449
-	.long	3193897029
-	.long	2147483648
-	.long	1071476560
-	.long	782141500
-	.long	1042879962
-	.long	2147483648
-	.long	1071465323
-	.long	4038904626
-	.long	1045063881
-	.long	2147483648
-	.long	1071454107
-	.long	2613036921
-	.long	3193217642
-	.long	0
-	.long	1071442912
-	.long	2095723435
-	.long	1044629175
-	.long	1073741824
-	.long	1071431737
-	.long	3879795974
-	.long	1045767874
-	.long	1073741824
-	.long	1071420583
-	.long	2662198042
-	.long	3191434637
-	.long	3221225472
-	.long	1071409449
-	.long	4037605722
-	.long	3193703090
-	.long	2147483648
-	.long	1071398336
-	.long	1860331835
-	.long	1040814822
-	.long	3221225472
-	.long	1071387243
-	.long	1522972033
-	.long	3190305974
-	.long	1073741824
-	.long	1071376171
-	.long	2361534207
-	.long	1043699366
-	.long	0
-	.long	1071365119
-	.long	4180309179
-	.long	1044142099
-	.long	0
-	.long	1071354087
-	.long	1201038528
-	.long	3192968772
-	.long	0
-	.long	1071343075
-	.long	1342478171
-	.long	3193251215
-	.long	0
-	.long	1071332083
-	.long	3836883348
-	.long	3193472007
-	.long	3221225472
-	.long	1071321110
-	.long	3864874250
-	.long	1045593126
-	.long	2147483648
-	.long	1071310158
-	.long	2169494998
-	.long	1046045346
-	.long	1073741824
-	.long	1071299226
-	.long	3785165075
-	.long	3193319246
-	.long	2147483648
-	.long	1071288313
-	.long	1137692678
-	.long	3192716779
-	.long	1073741824
-	.long	1071277420
-	.long	1752107598
-	.long	1046366120
-	.long	3221225472
-	.long	1071266546
-	.long	1912656912
-	.long	1046352281
-	.long	3221225472
-	.long	1071255692
-	.long	2882676334
-	.long	1046406353
-	.long	1073741824
-	.long	1071244858
-	.long	963612460
-	.long	1045282811
-	.long	0
-	.long	1071234043
-	.long	3811255773
-	.long	1046231636
-	.long	1073741824
-	.long	1071223247
-	.long	1126055989
-	.long	3192224037
-	.long	2147483648
-	.long	1071212470
-	.long	2079145427
-	.long	1044432413
-	.long	0
-	.long	1071201713
-	.long	3611595621
-	.long	1043358745
-	.long	2147483648
-	.long	1071190974
-	.long	390522769
-	.long	1045888252
-	.long	1073741824
-	.long	1071180255
-	.long	4087939723
-	.long	3192930745
-	.long	3221225472
-	.long	1071169554
-	.long	1451494480
-	.long	3190219274
-	.long	1073741824
-	.long	1071158873
-	.long	427176194
-	.long	3193042022
-	.long	2147483648
-	.long	1071148210
-	.long	1882381948
-	.long	3192727946
-	.long	2147483648
-	.long	1071137566
-	.long	3736313771
-	.long	3192087019
-	.long	1073741824
-	.long	1071126941
-	.long	1560398816
-	.long	3193185715
-	.long	2147483648
-	.long	1071116334
-	.long	1021942441
-	.long	1041526696
-	.long	2147483648
-	.long	1071105746
-	.long	3517080249
-	.long	3193576041
-	.long	3221225472
-	.long	1071095176
-	.long	2248589878
-	.long	1044527624
-	.long	2147483648
-	.long	1071084625
-	.long	2412896695
-	.long	1046112867
-	.long	3221225472
-	.long	1071074092
-	.long	3834725738
-	.long	1044562378
-	.long	1073741824
-	.long	1071063578
-	.long	1150920407
-	.long	1043768986
-	.long	0
-	.long	1071053082
-	.long	1379393428
-	.long	3188690690
-	.long	0
-	.long	1071042604
-	.long	3058183278
-	.long	3193617655
-	.long	0
-	.long	1071032144
-	.long	421133665
-	.long	3193417186
-	.long	0
-	.long	1071021702
-	.long	2860161357
-	.long	3191816125
-	.long	0
-	.long	1071011278
-	.long	1742405964
-	.long	1043580240
-	.long	0
-	.long	1071000872
-	.long	2821215927
-	.long	3188984273
-	.long	3221225472
-	.long	1070990483
-	.long	510275597
-	.long	1045813401
-	.long	2147483648
-	.long	1070980113
-	.long	304266588
-	.long	3191193536
-	.long	3221225472
-	.long	1070969760
-	.long	1854784211
-	.long	1046302073
-	.long	0
-	.long	1070959426
-	.long	3773082854
-	.long	3193008899
-	.long	2147483648
-	.long	1070949108
-	.long	3003572392
-	.long	1046404879
-	.long	3221225472
-	.long	1070938808
-	.long	1702149204
-	.long	1046407257
-	.long	2147483648
-	.long	1070928526
-	.long	3935314439
-	.long	1046438280
-	.long	3221225472
-	.long	1070918261
-	.long	2677087609
-	.long	1045501749
-	.long	2147483648
-	.long	1070908014
-	.long	4190598039
-	.long	3193640515
-	.long	1073741824
-	.long	1070897784
-	.long	368874072
-	.long	1044879927
-	.long	2147483648
-	.long	1070887571
-	.long	3584052697
-	.long	3192024662
-	.long	3221225472
-	.long	1070877375
-	.long	3762307829
-	.long	1045886918
-	.long	1073741824
-	.long	1070867197
-	.long	495710920
-	.long	1046317072
-	.long	0
-	.long	1070857036
-	.long	2292768238
-	.long	3190887508
-	.long	3221225472
-	.long	1070846891
-	.long	1044078151
-	.long	3193772914
-	.long	1073741824
-	.long	1070836764
-	.long	3266010457
-	.long	1043443755
-	.long	3221225472
-	.long	1070826653
-	.long	3571665822
-	.long	1045547823
-	.long	1073741824
-	.long	1070816560
-	.long	393348347
-	.long	3190525143
-	.long	2147483648
-	.long	1070806483
-	.long	4241722498
-	.long	3192084193
-	.long	2147483648
-	.long	1070796423
-	.long	1693797068
-	.long	3192807972
-	.long	0
-	.long	1070786380
-	.long	2860086745
-	.long	1046331646
-	.long	2147483648
-	.long	1070776353
-	.long	1366141759
-	.long	3192979363
-	.long	1073741824
-	.long	1070766343
-	.long	737899283
-	.long	1045853346
-	.long	3221225472
-	.long	1070756349
-	.long	88734873
-	.long	1043881257
-	.long	3221225472
-	.long	1070746372
-	.long	1438003315
-	.long	3192917101
-	.long	0
-	.long	1070736412
-	.long	1066505530
-	.long	1043896695
-	.long	3221225472
-	.long	1070726467
-	.long	2706653041
-	.long	3191113643
-	.long	3221225472
-	.long	1070716539
-	.long	1321764476
-	.long	1039573724
-	.long	0
-	.long	1070706628
-	.long	1126753211
-	.long	1044502976
-	.long	2147483648
-	.long	1070696732
-	.long	773642884
-	.long	1044110727
-	.long	1073741824
-	.long	1070686853
-	.long	1263743406
-	.long	3193115278
-	.long	0
-	.long	1070676990
-	.long	3115237732
-	.long	3193089176
-	.long	3221225472
-	.long	1070667142
-	.long	3642626838
-	.long	3191146032
-	.long	2147483648
-	.long	1070657311
-	.long	2091696428
-	.long	1044337177
-	.long	1073741824
-	.long	1070647496
-	.long	3168958391
-	.long	1044197568
-	.long	0
-	.long	1070637697
-	.long	711148669
-	.long	3193181047
-	.long	2147483648
-	.long	1070627913
-	.long	4207182773
-	.long	3193402092
-	.long	3221225472
-	.long	1070618145
-	.long	918070640
-	.long	3192902845
-	.long	3221225472
-	.long	1070608393
-	.long	3135571447
-	.long	3192193928
-	.long	2147483648
-	.long	1070598657
-	.long	1043705517
-	.long	3193188604
-	.long	2147483648
-	.long	1070581777
-	.long	1886680492
-	.long	1043890286
-	.long	2147483648
-	.long	1070562367
-	.long	3373799420
-	.long	3191917802
-	.long	2147483648
-	.long	1070542988
-	.long	2919618025
-	.long	3192461752
-	.long	2147483648
-	.long	1070523640
-	.long	2926365158
-	.long	3193113492
-	.long	0
-	.long	1070504323
-	.long	519978638
-	.long	1045918846
-	.long	0
-	.long	1070485037
-	.long	3665353151
-	.long	3193546248
-	.long	0
-	.long	1070465781
-	.long	2327718958
-	.long	1045050797
-	.long	0
-	.long	1070446556
-	.long	345326861
-	.long	3188224716
-	.long	2147483648
-	.long	1070427361
-	.long	2263747488
-	.long	3192871328
-	.long	0
-	.long	1070408197
-	.long	3894192264
-	.long	1045693123
-	.long	0
-	.long	1070389063
-	.long	994321593
-	.long	1046347203
-	.long	2147483648
-	.long	1070369959
-	.long	3540366700
-	.long	1042296230
-	.long	0
-	.long	1070350886
-	.long	966420752
-	.long	3192400412
-	.long	2147483648
-	.long	1070331842
-	.long	1954511160
-	.long	3193467762
-	.long	2147483648
-	.long	1070312828
-	.long	1875003040
-	.long	1045485629
-	.long	0
-	.long	1070293845
-	.long	4003372005
-	.long	3193714109
-	.long	2147483648
-	.long	1070274890
-	.long	2216083644
-	.long	1045720399
-	.long	0
-	.long	1070255966
-	.long	1240985743
-	.long	1045879414
-	.long	0
-	.long	1070237071
-	.long	1573064162
-	.long	1046427916
-	.long	0
-	.long	1070218206
-	.long	2500166582
-	.long	3193848169
-	.long	2147483648
-	.long	1070199369
-	.long	862131539
-	.long	1045606065
-	.long	0
-	.long	1070180563
-	.long	3733427622
-	.long	3193545988
-	.long	0
-	.long	1070161785
-	.long	124515358
-	.long	1045504766
-	.long	2147483648
-	.long	1070143036
-	.long	689228007
-	.long	1044238436
-	.long	0
-	.long	1070124317
-	.long	976284835
-	.long	3189879978
-	.long	2147483648
-	.long	1070105626
-	.long	2997446224
-	.long	3193394244
-	.long	2147483648
-	.long	1070086964
-	.long	594985163
-	.long	3190453447
-	.long	2147483648
-	.long	1070068331
-	.long	3634411091
-	.long	3193012662
-	.long	0
-	.long	1070049727
-	.long	841316482
-	.long	3192551604
-	.long	0
-	.long	1070031151
-	.long	518949849
-	.long	3189505693
-	.long	2147483648
-	.long	1070012603
-	.long	207633604
-	.long	1043791305
-	.long	2147483648
-	.long	1069994084
-	.long	925415631
-	.long	3189658670
-	.long	2147483648
-	.long	1069975593
-	.long	3348775015
-	.long	1046231055
-	.long	0
-	.long	1069957131
-	.long	4137593961
-	.long	1045760644
-	.long	2147483648
-	.long	1069938696
-	.long	3081207972
-	.long	1046319652
-	.long	2147483648
-	.long	1069920290
-	.long	2912811806
-	.long	3193250863
-	.long	0
-	.long	1069901912
-	.long	1704663230
-	.long	3192651171
-	.long	2147483648
-	.long	1069883561
-	.long	1726887473
-	.long	3193427817
-	.long	2147483648
-	.long	1069865238
-	.long	516302873
-	.long	1042556919
-	.long	2147483648
-	.long	1069846943
-	.long	3737277289
-	.long	3192083505
-	.long	0
-	.long	1069828676
-	.long	2829909067
-	.long	3191628520
-	.long	0
-	.long	1069810436
-	.long	3474800299
-	.long	3187384991
-	.long	2147483648
-	.long	1069792223
-	.long	2041291754
-	.long	3186735048
-	.long	2147483648
-	.long	1069774038
-	.long	3100739290
-	.long	3192991951
-	.long	2147483648
-	.long	1069755880
-	.long	2641686866
-	.long	1042449846
-	.long	0
-	.long	1069737750
-	.long	1353612457
-	.long	3192928544
-	.long	2147483648
-	.long	1069719646
-	.long	1823398190
-	.long	3193125156
-	.long	0
-	.long	1069701570
-	.long	2629108558
-	.long	3192983089
-	.long	2147483648
-	.long	1069683520
-	.long	314889080
-	.long	3193178947
-	.long	2147483648
-	.long	1069665497
-	.long	3426846470
-	.long	1046055034
-	.long	0
-	.long	1069647502
-	.long	2451521798
-	.long	3193081447
-	.long	2147483648
-	.long	1069629532
-	.long	963200030
-	.long	1046315089
-	.long	0
-	.long	1069611590
-	.long	3644976987
-	.long	1046450297
-	.long	2147483648
-	.long	1069593674
-	.long	1514045874
-	.long	3193337489
-	.long	0
-	.long	1069575785
-	.long	2640752615
-	.long	3192734715
-	.long	0
-	.long	1069557922
-	.long	177381730
-	.long	3193107348
-	.long	0
-	.long	1069532650
-	.long	546871269
-	.long	1045601847
-	.long	0
-	.long	1069497029
-	.long	2220408187
-	.long	1045964849
-	.long	0
-	.long	1069461461
-	.long	3101209784
-	.long	3192417098
-	.long	0
-	.long	1069425944
-	.long	3768825782
-	.long	1046196178
-	.long	0
-	.long	1069390480
-	.long	737308942
-	.long	1043872555
-	.long	0
-	.long	1069355068
-	.long	1944808119
-	.long	3193362317
-	.long	0
-	.long	1069319707
-	.long	852406261
-	.long	3191004250
-	.long	0
-	.long	1069284398
-	.long	3202370743
-	.long	3192549796
-	.long	0
-	.long	1069249140
-	.long	900633975
-	.long	1043862575
-	.long	0
-	.long	1069213934
-	.long	3417168564
-	.long	3193213168
-	.long	0
-	.long	1069178778
-	.long	2513309972
-	.long	1046051953
-	.long	0
-	.long	1069143674
-	.long	1836846968
-	.long	1044036653
-	.long	0
-	.long	1069108621
-	.long	675391362
-	.long	3193334972
-	.long	0
-	.long	1069073618
-	.long	1859398086
-	.long	3191668729
-	.long	0
-	.long	1069038666
-	.long	3835994043
-	.long	3193252196
-	.long	0
-	.long	1069003764
-	.long	563337246
-	.long	3192060530
-	.long	0
-	.long	1068968912
-	.long	3715154210
-	.long	1045592716
-	.long	0
-	.long	1068934111
-	.long	51415636
-	.long	3192193939
-	.long	0
-	.long	1068899359
-	.long	822049108
-	.long	1045846080
-	.long	0
-	.long	1068864658
-	.long	3739043340
-	.long	3193184949
-	.long	0
-	.long	1068830006
-	.long	2500828997
-	.long	3193115638
-	.long	0
-	.long	1068795403
-	.long	1479335089
-	.long	1045458233
-	.long	0
-	.long	1068760850
-	.long	1914098598
-	.long	1045079833
-	.long	0
-	.long	1068726346
-	.long	1470374909
-	.long	1046125471
-	.long	0
-	.long	1068691892
-	.long	2048101185
-	.long	3192960024
-	.long	0
-	.long	1068657486
-	.long	801101802
-	.long	1042523454
-	.long	0
-	.long	1068623129
-	.long	412171467
-	.long	1044799425
-	.long	0
-	.long	1068588821
-	.long	2124566049
-	.long	1040459843
-	.long	0
-	.long	1068554561
-	.long	2087558263
-	.long	1046083102
-	.long	0
-	.long	1068520350
-	.long	290389316
-	.long	1045220023
-	.long	0
-	.long	1068473430
-	.long	393737815
-	.long	1045770085
-	.long	0
-	.long	1068405202
-	.long	3273111658
-	.long	3193594336
-	.long	0
-	.long	1068337068
-	.long	3076935419
-	.long	3191993934
-	.long	0
-	.long	1068269030
-	.long	1564279721
-	.long	1040713632
-	.long	0
-	.long	1068201088
-	.long	1950103787
-	.long	3191285473
-	.long	0
-	.long	1068133240
-	.long	111301617
-	.long	1046140470
-	.long	0
-	.long	1068065488
-	.long	2740933659
-	.long	1046091898
-	.long	0
-	.long	1067997832
-	.long	1267131462
-	.long	3192947024
-	.long	0
-	.long	1067930268
-	.long	629787343
-	.long	1045599114
-	.long	0
-	.long	1067862800
-	.long	2943029746
-	.long	3191100621
-	.long	0
-	.long	1067795426
-	.long	2538631151
-	.long	3193953989
-	.long	0
-	.long	1067728144
-	.long	3881795033
-	.long	3191377363
-	.long	0
-	.long	1067660956
-	.long	2752747058
-	.long	3186250103
-	.long	0
-	.long	1067593862
-	.long	892170014
-	.long	3193330390
-	.long	0
-	.long	1067526860
-	.long	2000985783
-	.long	3192968647
-	.long	0
-	.long	1067459950
-	.long	1954077304
-	.long	1044399908
-	.long	0
-	.long	1067335900
-	.long	4120702847
-	.long	3193150730
-	.long	0
-	.long	1067202448
-	.long	353489980
-	.long	1045676744
-	.long	0
-	.long	1067069184
-	.long	2609643324
-	.long	3192108001
-	.long	0
-	.long	1066936100
-	.long	2904433317
-	.long	1044836541
-	.long	0
-	.long	1066803200
-	.long	319656790
-	.long	1044863904
-	.long	0
-	.long	1066670484
-	.long	2407987331
-	.long	3192995083
-	.long	0
-	.long	1066537948
-	.long	2437746120
-	.long	3193127733
-	.long	0
-	.long	1066405592
-	.long	762570215
-	.long	3189946997
-	.long	0
-	.long	1066145040
-	.long	3317159694
-	.long	1046060125
-	.long	0
-	.long	1065881056
-	.long	2317845886
-	.long	3191679176
-	.long	0
-	.long	1065617424
-	.long	3665195816
-	.long	1045633853
-	.long	0
-	.long	1065354160
-	.long	2008730355
-	.long	3193898211
-	.long	0
-	.long	1064829264
-	.long	3746236192
-	.long	1046121471
-	.long	0
-	.long	1064303680
-	.long	885296753
-	.long	3191852441
-	.long	0
-	.long	1063253696
-	.long	449976495
-	.long	3192682663
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	4294965248
-	.long	0
-	.long	4294965248
-	.long	0
-	.long	1073160192
-	.long	370913857
-	.long	3210587105
-	.long	1841914130
-	.long	3213059448
-	.long	3995341938
-	.long	3214607105
-	.long	2677381210
-	.long	3216320731
-	.long	3011779882
-	.long	3218479542
-	.long	1367832035
-	.long	1066403058
-	.long	2894285243
-	.long	1067936923
-	.long	1215221452
-	.long	1069835102
-	.long	370913857
-	.long	3210587105
-	.long	2677381210
-	.long	3216320731
-	.long	4172642429
-	.long	1056068382
-	.long	1215221451
-	.long	1069835102
-	.long	1092638156
-	.long	3184925618
-	.long	0
-	.long	4294967288
-	.long	0
-	.long	4294967295
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	997195776
-	.long	4200250559
-	.long	1072696090
-	.long	2808127345
-	.long	3162830514
-	.long	2851812149
-	.long	1072698941
-	.long	2595802551
-	.long	1016815913
-	.long	339411585
-	.long	1072701800
-	.long	264588982
-	.long	3162685233
-	.long	1048019041
-	.long	1072704666
-	.long	1398474845
-	.long	3161559171
-	.long	772914124
-	.long	1072707540
-	.long	4004372762
-	.long	1013278737
-	.long	3899555717
-	.long	1072710421
-	.long	427280750
-	.long	3163595548
-	.long	1928746161
-	.long	1072713311
-	.long	983617676
-	.long	1015333753
-	.long	3541402996
-	.long	1072716208
-	.long	2759177317
-	.long	1015903202
-	.long	238821257
-	.long	1072719114
-	.long	1469694871
-	.long	3163933563
-	.long	702412510
-	.long	1072722027
-	.long	3803266087
-	.long	3163328991
-	.long	728934454
-	.long	1072724948
-	.long	1413842688
-	.long	1015227188
-	.long	410360776
-	.long	1072727877
-	.long	1269990655
-	.long	1013024446
-	.long	4133881824
-	.long	1072730813
-	.long	2148155345
-	.long	3163979875
-	.long	3402036099
-	.long	1072733758
-	.long	405889334
-	.long	1016154232
-	.long	2602514713
-	.long	1072736711
-	.long	2268929336
-	.long	1015402860
-	.long	1828292879
-	.long	1072739672
-	.long	1255956747
-	.long	1016636974
-	.long	1172597893
-	.long	1072742641
-	.long	114433263
-	.long	1016396169
-	.long	728909815
-	.long	1072745618
-	.long	383930225
-	.long	1016078044
-	.long	590962156
-	.long	1072748603
-	.long	3829346666
-	.long	3164324173
-	.long	852742562
-	.long	1072751596
-	.long	667253586
-	.long	1010842135
-	.long	1608493509
-	.long	1072754597
-	.long	3159622171
-	.long	3163856313
-	.long	2952712987
-	.long	1072757606
-	.long	3293494651
-	.long	3161168877
-	.long	685187902
-	.long	1072760624
-	.long	378731989
-	.long	1015891691
-	.long	3490863953
-	.long	1072763649
-	.long	960797498
-	.long	3163997456
-	.long	2875075254
-	.long	1072766683
-	.long	4144233330
-	.long	3164382292
-	.long	3228316108
-	.long	1072769725
-	.long	3010241991
-	.long	3159471380
-	.long	351405227
-	.long	1072772776
-	.long	3125337328
-	.long	3160871055
-	.long	2930322912
-	.long	1072775834
-	.long	2599499422
-	.long	3163762623
-	.long	2471440686
-	.long	1072778901
-	.long	968836267
-	.long	3163263464
-	.long	3366293073
-	.long	1072781976
-	.long	3119426314
-	.long	1015169130
-	.long	1416741826
-	.long	1072785060
-	.long	2196380210
-	.long	1012462139
-	.long	1014845819
-	.long	1072788152
-	.long	3117910646
-	.long	3162607681
-	.long	2257959872
-	.long	1072791252
-	.long	3802946148
-	.long	1014013503
-	.long	948735466
-	.long	1072794361
-	.long	3516338028
-	.long	3163623459
-	.long	1480023343
-	.long	1072797478
-	.long	2247196168
-	.long	1016376029
-	.long	3949972341
-	.long	1072800603
-	.long	2068408548
-	.long	1015962444
-	.long	4162030108
-	.long	1072803737
-	.long	2763428480
-	.long	1016577925
-	.long	2214878420
-	.long	1072806880
-	.long	892270087
-	.long	3164164998
-	.long	2502433899
-	.long	1072810031
-	.long	2148595913
-	.long	1016072567
-	.long	828946858
-	.long	1072813191
-	.long	10642492
-	.long	1016988014
-	.long	1588871207
-	.long	1072816359
-	.long	143439582
-	.long	3164011992
-	.long	586995997
-	.long	1072819536
-	.long	41662348
-	.long	3163676568
-	.long	2218315341
-	.long	1072822721
-	.long	2694295388
-	.long	3164337444
-	.long	2288159958
-	.long	1072825915
-	.long	2169144469
-	.long	1015924597
-	.long	897099801
-	.long	1072829118
-	.long	754756297
-	.long	1016289581
-	.long	2440944790
-	.long	1072832329
-	.long	2492769774
-	.long	1015196030
-	.long	2725843665
-	.long	1072835549
-	.long	1433917087
-	.long	1015887099
-	.long	1853186616
-	.long	1072838778
-	.long	3066496371
-	.long	1016705150
-	.long	4219606026
-	.long	1072842015
-	.long	2434574742
-	.long	1015730124
-	.long	1337108031
-	.long	1072845262
-	.long	3203724452
-	.long	1015726421
-	.long	1897844341
-	.long	1072848517
-	.long	1254300460
-	.long	1016324514
-	.long	1709341917
-	.long	1072851781
-	.long	2571168217
-	.long	1015201075
-	.long	874372905
-	.long	1072855054
-	.long	100263788
-	.long	1016989308
-	.long	3790955393
-	.long	1072858335
-	.long	2352942462
-	.long	3164228666
-	.long	1972484976
-	.long	1072861626
-	.long	675290301
-	.long	3162688626
-	.long	4112506593
-	.long	1072864925
-	.long	2947355221
-	.long	1015419624
-	.long	1724976915
-	.long	1072868234
-	.long	420909223
-	.long	3164165955
-	.long	3504003472
-	.long	1072871551
-	.long	3594001060
-	.long	3158379228
-	.long	964107055
-	.long	1072874878
-	.long	2800439588
-	.long	3163881797
-	.long	2799960843
-	.long	1072878213
-	.long	1423655381
-	.long	1016070727
-	.long	526652809
-	.long	1072881558
-	.long	4223459736
-	.long	1016927951
-	.long	2839424854
-	.long	1072884911
-	.long	1171596163
-	.long	1014090255
-	.long	1253935211
-	.long	1072888274
-	.long	1395382931
-	.long	3160751189
-	.long	171030293
-	.long	1072891646
-	.long	3526460132
-	.long	1015477354
-	.long	3991843581
-	.long	1072895026
-	.long	4092853457
-	.long	1015634339
-	.long	4232894513
-	.long	1072898416
-	.long	2383938684
-	.long	1015717095
-	.long	1000925746
-	.long	1072901816
-	.long	1018491672
-	.long	3164358120
-	.long	2992903935
-	.long	1072905224
-	.long	2218154406
-	.long	1016276769
-	.long	1726216749
-	.long	1072908642
-	.long	2466808228
-	.long	3162724981
-	.long	1603444721
-	.long	1072912069
-	.long	1548633640
-	.long	3163249902
-	.long	2732492859
-	.long	1072915505
-	.long	2691479646
-	.long	3163304260
-	.long	926591435
-	.long	1072918951
-	.long	3208833762
-	.long	3163962090
-	.long	589198666
-	.long	1072922406
-	.long	2664346172
-	.long	3164206538
-	.long	1829099622
-	.long	1072925870
-	.long	1016661181
-	.long	3164509581
-	.long	460407023
-	.long	1072929344
-	.long	4237175092
-	.long	3164187045
-	.long	887463927
-	.long	1072932827
-	.long	3596744163
-	.long	3161842742
-	.long	3219942644
-	.long	1072936319
-	.long	3798990616
-	.long	1016417382
-	.long	3272845541
-	.long	1072939821
-	.long	928852419
-	.long	3164536824
-	.long	1156440435
-	.long	1072943333
-	.long	2351451249
-	.long	1015015632
-	.long	1276261410
-	.long	1072946854
-	.long	300981948
-	.long	1015732745
-	.long	3743175029
-	.long	1072950384
-	.long	2072812490
-	.long	3163223651
-	.long	78413852
-	.long	1072953925
-	.long	4183226867
-	.long	3164065827
-	.long	3278348324
-	.long	1072957474
-	.long	3069497416
-	.long	1015799288
-	.long	569847338
-	.long	1072961034
-	.long	472945272
-	.long	3160339305
-	.long	654919306
-	.long	1072964603
-	.long	3232961757
-	.long	3164096045
-	.long	3645941911
-	.long	1072968181
-	.long	3814685081
-	.long	3162621917
-	.long	1065662932
-	.long	1072971770
-	.long	2533670915
-	.long	1015578814
-	.long	1617004845
-	.long	1072975368
-	.long	82804944
-	.long	1011391354
-	.long	1118294578
-	.long	1072978976
-	.long	2197495694
-	.long	3160957977
-	.long	3978100823
-	.long	1072982593
-	.long	3513027190
-	.long	1016894539
-	.long	1720398391
-	.long	1072986221
-	.long	3980678963
-	.long	3164348656
-	.long	3049340112
-	.long	1072989858
-	.long	3062915824
-	.long	1014219171
-	.long	3784486610
-	.long	1072993505
-	.long	1581883040
-	.long	3162747529
-	.long	4040676318
-	.long	1072997162
-	.long	4090609238
-	.long	1016712034
-	.long	3933059031
-	.long	1073000829
-	.long	2133366768
-	.long	3162580408
-	.long	3577096743
-	.long	1073004506
-	.long	2951496418
-	.long	1014842263
-	.long	3088564500
-	.long	1073008193
-	.long	1762311517
-	.long	1016094249
-	.long	2583551245
-	.long	1073011890
-	.long	3161094195
-	.long	1016655067
-	.long	2178460671
-	.long	1073015597
-	.long	777878098
-	.long	3163891069
-	.long	1990012071
-	.long	1073019314
-	.long	3529070563
-	.long	3163861769
-	.long	2135241198
-	.long	1073023041
-	.long	1236747871
-	.long	1014637723
-	.long	2731501122
-	.long	1073026778
-	.long	1774031855
-	.long	3163518597
-	.long	3896463087
-	.long	1073030525
-	.long	1139797873
-	.long	3162282381
-	.long	1453150082
-	.long	1073034283
-	.long	498154669
-	.long	3162536638
-	.long	4109806887
-	.long	1073038050
-	.long	422403966
-	.long	1015517805
-	.long	3395129871
-	.long	1073041828
-	.long	4025345435
-	.long	3163383964
-	.long	3723038930
-	.long	1073045616
-	.long	378465264
-	.long	3163618158
-	.long	917841882
-	.long	1073049415
-	.long	18715565
-	.long	1016707884
-	.long	3689071823
-	.long	1073053223
-	.long	2321004996
-	.long	3163601292
-	.long	3566716925
-	.long	1073057042
-	.long	1536826856
-	.long	1015191009
-	.long	671025100
-	.long	1073060872
-	.long	3832014351
-	.long	3164070606
-	.long	3712504873
-	.long	1073064711
-	.long	88491949
-	.long	1016476236
-	.long	4222122499
-	.long	1073068561
-	.long	1277378074
-	.long	3164305313
-	.long	2321106615
-	.long	1073072422
-	.long	2171176610
-	.long	1010584347
-	.long	2425981843
-	.long	1073076293
-	.long	2830390851
-	.long	3164395175
-	.long	363667784
-	.long	1073080175
-	.long	813753950
-	.long	1016833785
-	.long	551349105
-	.long	1073084067
-	.long	3821916050
-	.long	3163155165
-	.long	3111574537
-	.long	1073087969
-	.long	2606161479
-	.long	3163808322
-	.long	3872257780
-	.long	1073091882
-	.long	1253592103
-	.long	1017006910
-	.long	2956612997
-	.long	1073095806
-	.long	2118169751
-	.long	3163784129
-	.long	488188413
-	.long	1073099741
-	.long	3199821029
-	.long	1016612624
-	.long	885834528
-	.long	1073103686
-	.long	1973258547
-	.long	3163310140
-	.long	4273770423
-	.long	1073107641
-	.long	3383180809
-	.long	3164267477
-	.long	2186617381
-	.long	1073111608
-	.long	2270764084
-	.long	3164321289
-	.long	3339203574
-	.long	1073115585
-	.long	1483497780
-	.long	3163457330
-	.long	3561793907
-	.long	1073119573
-	.long	1157054053
-	.long	1012938926
-	.long	2979960120
-	.long	1073123572
-	.long	2599109725
-	.long	1015547069
-	.long	1719614413
-	.long	1073127582
-	.long	330458198
-	.long	3164331316
-	.long	4201977662
-	.long	1073131602
-	.long	748330254
-	.long	1014642933
-	.long	1963711167
-	.long	1073135634
-	.long	1744767757
-	.long	3161622870
-	.long	3721688645
-	.long	1073139676
-	.long	3069276937
-	.long	1016887977
-	.long	1013258799
-	.long	1073143730
-	.long	1748797611
-	.long	3161177658
-	.long	2555984613
-	.long	1073147794
-	.long	2652555442
-	.long	3163601268
-	.long	4182873220
-	.long	1073151869
-	.long	629542646
-	.long	3163044879
-	.long	1727278727
-	.long	1073155956
-	.long	3562710623
-	.long	1012520516
-	.long	3907805044
-	.long	1073160053
-	.long	2257091225
-	.long	3162598983
-	.long	2263535754
-	.long	1073164162
-	.long	752233586
-	.long	3163687584
-	.long	1218806132
-	.long	1073168282
-	.long	1818613052
-	.long	3163597017
-	.long	903334909
-	.long	1073172413
-	.long	1636462108
-	.long	1016088573
-	.long	1447192521
-	.long	1073176555
-	.long	1462857171
-	.long	3163563097
-	.long	2980802057
-	.long	1073180708
-	.long	378619896
-	.long	1016821879
-	.long	1339972927
-	.long	1073184873
-	.long	167908909
-	.long	1016620728
-	.long	950803702
-	.long	1073189049
-	.long	1655364926
-	.long	1016285608
-	.long	1944781191
-	.long	1073193236
-	.long	3993278767
-	.long	3162772855
-	.long	158781403
-	.long	1073197435
-	.long	2221464712
-	.long	3164335029
-	.long	19972402
-	.long	1073201645
-	.long	3507899862
-	.long	1017057868
-	.long	1660913392
-	.long	1073205866
-	.long	4218599604
-	.long	1016184283
-	.long	919555682
-	.long	1073210099
-	.long	3121969534
-	.long	1013996802
-	.long	2224145553
-	.long	1073214343
-	.long	3482522030
-	.long	3162537745
-	.long	1413356050
-	.long	1073218599
-	.long	1651349291
-	.long	3163716742
-	.long	2916157145
-	.long	1073222866
-	.long	219487565
-	.long	1016357943
-	.long	2571947539
-	.long	1073227145
-	.long	3558159064
-	.long	3164425245
-	.long	515457527
-	.long	1073231436
-	.long	836709333
-	.long	1016699802
-	.long	1176749997
-	.long	1073235738
-	.long	2738998779
-	.long	3163084420
-	.long	396319521
-	.long	1073240052
-	.long	4172420816
-	.long	3160123208
-	.long	2604962541
-	.long	1073244377
-	.long	2614425274
-	.long	3164587768
-	.long	3643909174
-	.long	1073248714
-	.long	3537586109
-	.long	1015403223
-	.long	3649726105
-	.long	1073253063
-	.long	4085036346
-	.long	1016698050
-	.long	2759350287
-	.long	1073257424
-	.long	1148526634
-	.long	1016943509
-	.long	1110089947
-	.long	1073261797
-	.long	1451641639
-	.long	1016523249
-	.long	3134592888
-	.long	1073266181
-	.long	4232266862
-	.long	1017039710
-	.long	380978316
-	.long	1073270578
-	.long	854188970
-	.long	3161511262
-	.long	1577608921
-	.long	1073274986
-	.long	1875489510
-	.long	3164016970
-	.long	2568320822
-	.long	1073279406
-	.long	2732824428
-	.long	1015401491
-	.long	3492293770
-	.long	1073283838
-	.long	2248032210
-	.long	1016435402
-	.long	194117574
-	.long	1073288283
-	.long	777528612
-	.long	3164460665
-	.long	1403662306
-	.long	1073292739
-	.long	2788809599
-	.long	3162719583
-	.long	2966275557
-	.long	1073297207
-	.long	2176155324
-	.long	3160891335
-	.long	727685349
-	.long	1073301688
-	.long	2038246809
-	.long	3163407318
-	.long	3418903055
-	.long	1073306180
-	.long	2527457337
-	.long	3161869180
-	.long	2591453363
-	.long	1073310685
-	.long	2132396182
-	.long	3160122774
-	.long	2682146384
-	.long	1073315202
-	.long	2082178513
-	.long	3164411995
-	.long	3833209506
-	.long	1073319731
-	.long	2722920684
-	.long	1014803418
-	.long	1892288442
-	.long	1073324273
-	.long	2446255666
-	.long	3163648957
-	.long	1297350157
-	.long	1073328827
-	.long	1308022040
-	.long	3164461134
-	.long	2191782032
-	.long	1073333393
-	.long	2960257726
-	.long	1014791238
-	.long	424392917
-	.long	1073337972
-	.long	2749202995
-	.long	3163887294
-	.long	434316067
-	.long	1073342563
-	.long	2028358766
-	.long	1014506698
-	.long	2366108318
-	.long	1073347166
-	.long	2867985102
-	.long	3162810830
-	.long	2069751141
-	.long	1073351782
-	.long	1562170675
-	.long	3163773257
-	.long	3985553595
-	.long	1073356410
-	.long	4002146062
-	.long	1016882712
-	.long	3964284211
-	.long	1073361051
-	.long	2111583915
-	.long	1016475740
-	.long	2152073944
-	.long	1073365705
-	.long	1486860576
-	.long	3164252032
-	.long	2990417245
-	.long	1073370371
-	.long	3683467745
-	.long	3164417902
-	.long	2331271250
-	.long	1073375050
-	.long	812057446
-	.long	1013256022
-	.long	321958744
-	.long	1073379742
-	.long	3401933767
-	.long	1016843134
-	.long	1405169241
-	.long	1073384446
-	.long	2998539689
-	.long	3163879527
-	.long	1434058175
-	.long	1073389163
-	.long	251133233
-	.long	1016134345
-	.long	557149882
-	.long	1073393893
-	.long	3672720709
-	.long	1015585841
-	.long	3218338682
-	.long	1073398635
-	.long	3404164304
-	.long	3163525684
-	.long	977020788
-	.long	1073403391
-	.long	3065100517
-	.long	1016590139
-	.long	2572866477
-	.long	1073408159
-	.long	878562433
-	.long	1016570317
-	.long	3861050111
-	.long	1073412940
-	.long	254893773
-	.long	3163861756
-	.long	697153126
-	.long	1073417735
-	.long	1283515429
-	.long	3164331765
-	.long	1822067026
-	.long	1073422542
-	.long	1241994956
-	.long	1016388866
-	.long	3092190715
-	.long	1073427362
-	.long	814012168
-	.long	3160571998
-	.long	364333489
-	.long	1073432196
-	.long	3923737744
-	.long	3162469949
-	.long	2380618042
-	.long	1073437042
-	.long	3149557219
-	.long	3164369375
-	.long	703710506
-	.long	1073441902
-	.long	1384660846
-	.long	1016244467
-	.long	4076559943
-	.long	1073446774
-	.long	2119478331
-	.long	3161806927
-	.long	4062661092
-	.long	1073451660
-	.long	1422616006
-	.long	3164303894
-	.long	815859274
-	.long	1073456560
-	.long	240396590
-	.long	3164536019
-	.long	3080351519
-	.long	1073461472
-	.long	3379126789
-	.long	3158266577
-	.long	2420883922
-	.long	1073466398
-	.long	2049810052
-	.long	1015168464
-	.long	3287523847
-	.long	1073471337
-	.long	1625971539
-	.long	3158058531
-	.long	1540824585
-	.long	1073476290
-	.long	1064017011
-	.long	3164536266
-	.long	1631695677
-	.long	1073481256
-	.long	2717633076
-	.long	3163392602
-	.long	3716502172
-	.long	1073486235
-	.long	2303740125
-	.long	1015091301
-	.long	3657065772
-	.long	1073491228
-	.long	399025623
-	.long	3164005654
-	.long	1610600570
-	.long	1073496235
-	.long	3766732298
-	.long	1016808759
-	.long	2029714210
-	.long	1073501255
-	.long	613660079
-	.long	1016147719
-	.long	777507147
-	.long	1073506289
-	.long	4282924205
-	.long	1016236109
-	.long	2307442995
-	.long	1073511336
-	.long	3190117721
-	.long	3163453115
-	.long	2483480501
-	.long	1073516397
-	.long	1216371780
-	.long	1014082748
-	.long	1464976603
-	.long	1073521472
-	.long	3507292405
-	.long	3163026110
-	.long	3706687593
-	.long	1073526560
-	.long	3521726939
-	.long	1014301643
-	.long	778901109
-	.long	1073531663
-	.long	2248183954
-	.long	3162317327
-	.long	1432208378
-	.long	1073536779
-	.long	1401068914
-	.long	3163412539
-	.long	1532734324
-	.long	1073541909
-	.long	3094216535
-	.long	3164211433
-	.long	1242007932
-	.long	1073547053
-	.long	1132034716
-	.long	3164388407
-	.long	721996136
-	.long	1073552211
-	.long	563754734
-	.long	1016419894
-	.long	135105010
-	.long	1073557383
-	.long	1906148728
-	.long	3164424315
-	.long	3939148246
-	.long	1073562568
-	.long	3210352148
-	.long	1016322899
-	.long	3707479175
-	.long	1073567768
-	.long	3613079303
-	.long	1015213314
-	.long	3898795731
-	.long	1073572982
-	.long	1249994144
-	.long	1012918394
-	.long	382305176
-	.long	1073578211
-	.long	2347622376
-	.long	3163627201
-	.long	1912561781
-	.long	1073583453
-	.long	3147495102
-	.long	1016726829
-	.long	64696965
-	.long	1073588710
-	.long	1768797490
-	.long	1016865536
-	.long	3594158869
-	.long	1073593980
-	.long	2456521700
-	.long	3164305137
-	.long	4076975200
-	.long	1073599265
-	.long	2029000899
-	.long	1016257111
-	.long	1679558232
-	.long	1073604565
-	.long	2390342287
-	.long	3164382546
-	.long	863738719
-	.long	1073609879
-	.long	1326992220
-	.long	3163661773
-	.long	1796832535
-	.long	1073615207
-	.long	3176955716
-	.long	3161634089
-	.long	351641897
-	.long	1073620550
-	.long	2172261526
-	.long	3164059175
-	.long	991358482
-	.long	1073625907
-	.long	838715019
-	.long	3164206244
-	.long	3884662774
-	.long	1073631278
-	.long	2158611599
-	.long	1015258761
-	.long	610758006
-	.long	1073636665
-	.long	1965209397
-	.long	3162914808
-	.long	4224142467
-	.long	1073642065
-	.long	3389820386
-	.long	1016255778
-	.long	2009970496
-	.long	1073647481
-	.long	2159039665
-	.long	3163621524
-	.long	2728693978
-	.long	1073652911
-	.long	396109971
-	.long	3164511267
-	.long	2256325230
-	.long	1073658356
-	.long	580117746
-	.long	1016365871
-	.long	764307441
-	.long	1073663816
-	.long	3021057420
-	.long	3164378099
-	.long	2719515920
-	.long	1073669290
-	.long	2760332941
-	.long	1016186509
-	.long	3999357479
-	.long	1073674779
-	.long	2258941616
-	.long	1016973300
-	.long	481706282
-	.long	1073680284
-	.long	1696079173
-	.long	3163759104
-	.long	929806999
-	.long	1073685803
-	.long	3205336643
-	.long	1016308133
-	.long	1222472308
-	.long	1073691337
-	.long	1054357470
-	.long	3162069594
-	.long	1533953344
-	.long	1073696886
-	.long	769171851
-	.long	1016714209
-	.long	2038973688
-	.long	1073702450
-	.long	892941374
-	.long	1017095035
-	.long	2912730644
-	.long	1073708029
-	.long	3490067722
-	.long	3164453650
-	.long	35929225
-	.long	1073713624
-	.long	2809788041
-	.long	3160485544
-	.long	2174652632
-	.long	1073719233
-	.long	4087714590
-	.long	1015498835
-	.long	915592468
-	.long	1073724858
-	.long	352947894
-	.long	3162072947
-	.long	730821105
-	.long	1073730498
-	.long	2523232743
-	.long	1013115764
-	.long	1797923801
-	.long	1073736153
-	.long	1950547427
-	.long	1014277635
-	.long	3884607281
-	.long	1062590591
-	.long	3607404736
-	.long	1068264200
-	.long	1874480759
-	.long	1065595563
-	.long	4286760335
-	.long	1070514109
-	.long	4277811695
-	.long	1072049730
-	.long	0
-	.long	0
-	.long	4277811695
-	.long	1072049730
-	.long	4277811695
-	.long	3219533378
-	.long	4160749568
-	.long	4294967295
-	.long	4160749568
-	.long	4294967295
-	.long	0
-	.long	2147483648
-	.long	0
-	.long	0
-	.type	static_const_table,@object
-	.size	static_const_table,12576
-	.data
-	.section .note.GNU-stack, ""
-# End
diff --git a/libm/x86_64/e_exp.S b/libm/x86_64/e_exp.S
deleted file mode 100644
index 6882dfc..0000000
--- a/libm/x86_64/e_exp.S
+++ /dev/null
@@ -1,636 +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).
-//        x    x/log(2)     n
-//       e  = 2          = 2 * T[j] * (1 + P(y))
-//  where
-//       x = m*log(2)/K + y,    y in [-log(2)/K..log(2)/K]
-//       m = n*K + j,           m,n,j - signed integer, j in [-K/2..K/2]
-//                  j/K
-//       values of 2   are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
-//
-//       P(y) is a minimax polynomial approximation of exp(x)-1
-//       on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
-//
-//  To avoid problems with arithmetic overflow and underflow,
-//            n                        n1  n2
-//  value of 2  is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
-//  where BIAS is a value of exponent bias.
-//
-// Special cases:
-//  exp(NaN) = NaN
-//  exp(+INF) = +INF
-//  exp(-INF) = 0
-//  exp(x) = 1 for subnormals
-//  for finite argument, only exp(0)=1 is exact
-//  For IEEE double
-//    if x >  709.782712893383973096 then exp(x) overflow
-//    if x < -745.133219101941108420 then exp(x) underflow
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  exp
-ENTRY(exp)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_exp.1:
-        subq      $24, %rsp
-..___tag_value_exp.3:
-        movsd     %xmm0, 8(%rsp)
-..B1.2:
-        unpcklpd  %xmm0, %xmm0
-        movapd    cv(%rip), %xmm1
-        movapd    Shifter(%rip), %xmm6
-        movapd    16+cv(%rip), %xmm2
-        movapd    32+cv(%rip), %xmm3
-        pextrw    $3, %xmm0, %eax
-        andl      $32767, %eax
-        movl      $16527, %edx
-        subl      %eax, %edx
-        subl      $15504, %eax
-        orl       %eax, %edx
-        cmpl      $-2147483648, %edx
-        jae       .L_2TAG_PACKET_0.0.2
-        mulpd     %xmm0, %xmm1
-        addpd     %xmm6, %xmm1
-        movapd    %xmm1, %xmm7
-        subpd     %xmm6, %xmm1
-        mulpd     %xmm1, %xmm2
-        movapd    64+cv(%rip), %xmm4
-        mulpd     %xmm1, %xmm3
-        movapd    80+cv(%rip), %xmm5
-        subpd     %xmm2, %xmm0
-        movd      %xmm7, %eax
-        movl      %eax, %ecx
-        andl      $63, %ecx
-        shll      $4, %ecx
-        sarl      $6, %eax
-        movl      %eax, %edx
-        movdqa    mmask(%rip), %xmm6
-        pand      %xmm6, %xmm7
-        movdqa    bias(%rip), %xmm6
-        paddq     %xmm6, %xmm7
-        psllq     $46, %xmm7
-        subpd     %xmm3, %xmm0
-        lea       Tbl_addr(%rip), %r8
-        movapd    (%rcx,%r8), %xmm2
-        mulpd     %xmm0, %xmm4
-        movapd    %xmm0, %xmm6
-        movapd    %xmm0, %xmm1
-        mulpd     %xmm6, %xmm6
-        mulpd     %xmm6, %xmm0
-        addpd     %xmm4, %xmm5
-        mulsd     %xmm6, %xmm0
-        mulpd     48+cv(%rip), %xmm6
-        addsd     %xmm2, %xmm1
-        unpckhpd  %xmm2, %xmm2
-        mulpd     %xmm5, %xmm0
-        addsd     %xmm0, %xmm1
-        orpd      %xmm7, %xmm2
-        unpckhpd  %xmm0, %xmm0
-        addsd     %xmm1, %xmm0
-        addsd     %xmm6, %xmm0
-        addl      $894, %edx
-        cmpl      $1916, %edx
-        ja        .L_2TAG_PACKET_1.0.2
-        mulsd     %xmm2, %xmm0
-        addsd     %xmm2, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_1.0.2:
-        xorpd     %xmm3, %xmm3
-        movapd    ALLONES(%rip), %xmm4
-        movl      $-1022, %edx
-        subl      %eax, %edx
-        movd      %edx, %xmm5
-        psllq     %xmm5, %xmm4
-        movl      %eax, %ecx
-        sarl      $1, %eax
-        pinsrw    $3, %eax, %xmm3
-        movapd    ebias(%rip), %xmm6
-        psllq     $4, %xmm3
-        psubd     %xmm3, %xmm2
-        mulsd     %xmm2, %xmm0
-        cmpl      $52, %edx
-        jg        .L_2TAG_PACKET_2.0.2
-        andpd     %xmm2, %xmm4
-        paddd     %xmm6, %xmm3
-        subsd     %xmm4, %xmm2
-        addsd     %xmm2, %xmm0
-        cmpl      $1023, %ecx
-        jge       .L_2TAG_PACKET_3.0.2
-        pextrw    $3, %xmm0, %ecx
-        andl      $32768, %ecx
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_4.0.2
-        movapd    %xmm0, %xmm6
-        addsd     %xmm4, %xmm0
-        mulsd     %xmm3, %xmm0
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        cmpl      $0, %ecx
-        je        .L_2TAG_PACKET_5.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_5.0.2:
-        mulsd     %xmm3, %xmm6
-        mulsd     %xmm3, %xmm4
-        movq      %xmm6, %xmm0
-        pxor      %xmm4, %xmm6
-        psrad     $31, %xmm6
-        pshufd    $85, %xmm6, %xmm6
-        psllq     $1, %xmm0
-        psrlq     $1, %xmm0
-        pxor      %xmm6, %xmm0
-        psrlq     $63, %xmm6
-        paddq     %xmm6, %xmm0
-        paddq     %xmm4, %xmm0
-        movl      $15, (%rsp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_4.0.2:
-        addsd     %xmm4, %xmm0
-        mulsd     %xmm3, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_3.0.2:
-        addsd     %xmm4, %xmm0
-        mulsd     %xmm3, %xmm0
-        pextrw    $3, %xmm0, %ecx
-        andl      $32752, %ecx
-        cmpl      $32752, %ecx
-        jnb       .L_2TAG_PACKET_7.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_2.0.2:
-        paddd     %xmm6, %xmm3
-        addpd     %xmm2, %xmm0
-        mulsd     %xmm3, %xmm0
-        movl      $15, (%rsp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_8.0.2:
-        cmpl      $2146435072, %eax
-        jae       .L_2TAG_PACKET_9.0.2
-        movl      12(%rsp), %eax
-        cmpl      $-2147483648, %eax
-        jae       .L_2TAG_PACKET_10.0.2
-        movsd     XMAX(%rip), %xmm0
-        mulsd     %xmm0, %xmm0
-.L_2TAG_PACKET_7.0.2:
-        movl      $14, (%rsp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_10.0.2:
-        movsd     XMIN(%rip), %xmm0
-        mulsd     %xmm0, %xmm0
-        movl      $15, (%rsp)
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_9.0.2:
-        movl      8(%rsp), %edx
-        cmpl      $2146435072, %eax
-        ja        .L_2TAG_PACKET_11.0.2
-        cmpl      $0, %edx
-        jne       .L_2TAG_PACKET_11.0.2
-        movl      12(%rsp), %eax
-        cmpl      $2146435072, %eax
-        jne       .L_2TAG_PACKET_12.0.2
-        movsd     INF(%rip), %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_12.0.2:
-        movsd     ZERO(%rip), %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_11.0.2:
-        movsd     8(%rsp), %xmm0
-        addsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-        movl      12(%rsp), %eax
-        andl      $2147483647, %eax
-        cmpl      $1083179008, %eax
-        jae       .L_2TAG_PACKET_8.0.2
-        movsd     8(%rsp), %xmm0
-        addsd     ONE_val(%rip), %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_6.0.2:
-        movq      %xmm0, 16(%rsp)
-..B1.3:
-        movq      16(%rsp), %xmm0
-.L_2TAG_PACKET_13.0.2:
-..B1.5:
-        addq      $24, %rsp
-..___tag_value_exp.4:
-        ret       
-..___tag_value_exp.5:
-END(exp)
-# -- End  exp
-	.section .rodata, "a"
-	.align 16
-	.align 16
-cv:
-	.long	1697350398
-	.long	1079448903
-	.long	1697350398
-	.long	1079448903
-	.long	4277796864
-	.long	1065758274
-	.long	4277796864
-	.long	1065758274
-	.long	3164486458
-	.long	1025308570
-	.long	3164486458
-	.long	1025308570
-	.long	4294967294
-	.long	1071644671
-	.long	4294967294
-	.long	1071644671
-	.long	3811088480
-	.long	1062650204
-	.long	1432067621
-	.long	1067799893
-	.long	3230715663
-	.long	1065423125
-	.long	1431604129
-	.long	1069897045
-	.type	cv,@object
-	.size	cv,96
-	.align 16
-Shifter:
-	.long	0
-	.long	1127743488
-	.long	0
-	.long	1127743488
-	.type	Shifter,@object
-	.size	Shifter,16
-	.align 16
-mmask:
-	.long	4294967232
-	.long	0
-	.long	4294967232
-	.long	0
-	.type	mmask,@object
-	.size	mmask,16
-	.align 16
-bias:
-	.long	65472
-	.long	0
-	.long	65472
-	.long	0
-	.type	bias,@object
-	.size	bias,16
-	.align 16
-Tbl_addr:
-	.long	0
-	.long	0
-	.long	0
-	.long	0
-	.long	235107661
-	.long	1018002367
-	.long	1048019040
-	.long	11418
-	.long	896005651
-	.long	1015861842
-	.long	3541402996
-	.long	22960
-	.long	1642514529
-	.long	1012987726
-	.long	410360776
-	.long	34629
-	.long	1568897900
-	.long	1016568486
-	.long	1828292879
-	.long	46424
-	.long	1882168529
-	.long	1010744893
-	.long	852742562
-	.long	58348
-	.long	509852888
-	.long	1017336174
-	.long	3490863952
-	.long	70401
-	.long	653277307
-	.long	1017431380
-	.long	2930322911
-	.long	82586
-	.long	1649557430
-	.long	1017729363
-	.long	1014845818
-	.long	94904
-	.long	1058231231
-	.long	1015777676
-	.long	3949972341
-	.long	107355
-	.long	1044000607
-	.long	1016786167
-	.long	828946858
-	.long	119943
-	.long	1151779725
-	.long	1015705409
-	.long	2288159958
-	.long	132667
-	.long	3819481236
-	.long	1016499965
-	.long	1853186616
-	.long	145530
-	.long	2552227826
-	.long	1015039787
-	.long	1709341917
-	.long	158533
-	.long	1829350193
-	.long	1015216097
-	.long	4112506593
-	.long	171677
-	.long	1913391795
-	.long	1015756674
-	.long	2799960843
-	.long	184965
-	.long	1303423926
-	.long	1015238005
-	.long	171030293
-	.long	198398
-	.long	1574172746
-	.long	1016061241
-	.long	2992903935
-	.long	211976
-	.long	3424156969
-	.long	1017196428
-	.long	926591434
-	.long	225703
-	.long	1938513547
-	.long	1017631273
-	.long	887463926
-	.long	239579
-	.long	2804567149
-	.long	1015390024
-	.long	1276261410
-	.long	253606
-	.long	631083525
-	.long	1017690182
-	.long	569847337
-	.long	267786
-	.long	1623370770
-	.long	1011049453
-	.long	1617004845
-	.long	282120
-	.long	3667985273
-	.long	1013894369
-	.long	3049340112
-	.long	296610
-	.long	3145379760
-	.long	1014403278
-	.long	3577096743
-	.long	311258
-	.long	2603100681
-	.long	1017152460
-	.long	1990012070
-	.long	326066
-	.long	3249202951
-	.long	1017448880
-	.long	1453150081
-	.long	341035
-	.long	419288974
-	.long	1016280325
-	.long	917841882
-	.long	356167
-	.long	3793507337
-	.long	1016095713
-	.long	3712504873
-	.long	371463
-	.long	728023093
-	.long	1016345318
-	.long	363667784
-	.long	386927
-	.long	2582678538
-	.long	1017123460
-	.long	2956612996
-	.long	402558
-	.long	7592966
-	.long	1016721543
-	.long	2186617380
-	.long	418360
-	.long	228611441
-	.long	1016696141
-	.long	1719614412
-	.long	434334
-	.long	2261665670
-	.long	1017457593
-	.long	1013258798
-	.long	450482
-	.long	544148907
-	.long	1017323666
-	.long	3907805043
-	.long	466805
-	.long	2383914918
-	.long	1017143586
-	.long	1447192520
-	.long	483307
-	.long	1176412038
-	.long	1017267372
-	.long	1944781190
-	.long	499988
-	.long	2882956373
-	.long	1013312481
-	.long	919555682
-	.long	516851
-	.long	3154077648
-	.long	1016528543
-	.long	2571947538
-	.long	533897
-	.long	348651999
-	.long	1016405780
-	.long	2604962540
-	.long	551129
-	.long	3253791412
-	.long	1015920431
-	.long	1110089947
-	.long	568549
-	.long	1509121860
-	.long	1014756995
-	.long	2568320822
-	.long	586158
-	.long	2617649212
-	.long	1017340090
-	.long	2966275556
-	.long	603959
-	.long	553214634
-	.long	1016457425
-	.long	2682146383
-	.long	621954
-	.long	730975783
-	.long	1014083580
-	.long	2191782032
-	.long	640145
-	.long	1486499517
-	.long	1016818996
-	.long	2069751140
-	.long	658534
-	.long	2595788928
-	.long	1016407932
-	.long	2990417244
-	.long	677123
-	.long	1853053619
-	.long	1015310724
-	.long	1434058175
-	.long	695915
-	.long	2462790535
-	.long	1015814775
-	.long	2572866477
-	.long	714911
-	.long	3693944214
-	.long	1017259110
-	.long	3092190714
-	.long	734114
-	.long	2979333550
-	.long	1017188654
-	.long	4076559942
-	.long	753526
-	.long	174054861
-	.long	1014300631
-	.long	2420883922
-	.long	773150
-	.long	816778419
-	.long	1014197934
-	.long	3716502172
-	.long	792987
-	.long	3507050924
-	.long	1015341199
-	.long	777507147
-	.long	813041
-	.long	1821514088
-	.long	1013410604
-	.long	3706687593
-	.long	833312
-	.long	920623539
-	.long	1016295433
-	.long	1242007931
-	.long	853805
-	.long	2789017511
-	.long	1014276997
-	.long	3707479175
-	.long	874520
-	.long	3586233004
-	.long	1015962192
-	.long	64696965
-	.long	895462
-	.long	474650514
-	.long	1016642419
-	.long	863738718
-	.long	916631
-	.long	1614448851
-	.long	1014281732
-	.long	3884662774
-	.long	938030
-	.long	2450082086
-	.long	1016164135
-	.long	2728693977
-	.long	959663
-	.long	1101668360
-	.long	1015989180
-	.long	3999357479
-	.long	981531
-	.long	835814894
-	.long	1015702697
-	.long	1533953344
-	.long	1003638
-	.long	1301400989
-	.long	1014466875
-	.long	2174652632
-	.long	1025985
-	.type	Tbl_addr,@object
-	.size	Tbl_addr,1024
-	.align 16
-ALLONES:
-	.long	4294967295
-	.long	4294967295
-	.long	4294967295
-	.long	4294967295
-	.type	ALLONES,@object
-	.size	ALLONES,16
-	.align 16
-ebias:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	1072693248
-	.type	ebias,@object
-	.size	ebias,16
-	.align 4
-XMAX:
-	.long	4294967295
-	.long	2146435071
-	.type	XMAX,@object
-	.size	XMAX,8
-	.align 4
-XMIN:
-	.long	0
-	.long	1048576
-	.type	XMIN,@object
-	.size	XMIN,8
-	.align 4
-INF:
-	.long	0
-	.long	2146435072
-	.type	INF,@object
-	.size	INF,8
-	.align 4
-ZERO:
-	.long	0
-	.long	0
-	.type	ZERO,@object
-	.size	ZERO,8
-	.align 4
-ONE_val:
-	.long	0
-	.long	1072693248
-	.type	ONE_val,@object
-	.size	ONE_val,8
-	.data
-	.section .note.GNU-stack, ""
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_exp.1-.
-	.4byte ..___tag_value_exp.5-..___tag_value_exp.1
-	.2byte 0x0400
-	.4byte ..___tag_value_exp.3-..___tag_value_exp.1
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_exp.4-..___tag_value_exp.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/e_log.S b/libm/x86_64/e_log.S
deleted file mode 100644
index 40cb5e2..0000000
--- a/libm/x86_64/e_log.S
+++ /dev/null
@@ -1,779 +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
-//                     ---------------------
-//
-//    x=2^k * mx, mx in [1,2)
-//
-//    Get B~1/mx based on the output of rcpss instruction (B0)
-//    B = int((B0*2^7+0.5))/2^7
-//
-//    Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
-//
-//    Result:  k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6)  and
-//             p(r) is a degree 7 polynomial
-//             -log(B) read from data table (high, low parts)
-//             Result is formed from high and low parts
-//
-// Special cases:
-//  log(NaN) = quiet NaN, and raise invalid exception
-//  log(+INF) = that INF
-//  log(0) = -INF with divide-by-zero exception raised
-//  log(1) = +0
-//  log(x) = NaN with invalid exception raised if x < -0, including -INF
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  log
-ENTRY(log)
-# parameter 1: %xmm0
-..B1.1:
-..___tag_value_log.1:
-        subq      $24, %rsp
-..___tag_value_log.3:
-        movsd     %xmm0, (%rsp)
-..B1.2:
-        movq      $0x3ff0000000000000, %rax
-        movd      %rax, %xmm2
-        movq      $0x77f0000000000000, %rdx
-        movd      %rdx, %xmm3
-        movl      $32768, %ecx
-        movd      %rcx, %xmm4
-        movq      $0xffffe00000000000, %r8
-        movd      %r8, %xmm5
-        movq      %xmm0, %xmm1
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        movl      $16352, %ecx
-        psrlq     $27, %xmm0
-        lea       L_tbl(%rip), %r11
-        psrld     $2, %xmm0
-        rcpps     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $228, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        subl      $16, %eax
-        cmpl      $32736, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-.L_2TAG_PACKET_1.0.2:
-        paddd     %xmm4, %xmm0
-        orpd      %xmm3, %xmm1
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm1, %xmm5
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm1
-        mulpd     %xmm0, %xmm5
-        andl      $32752, %eax
-        subl      %ecx, %eax
-        cvtsi2sd  %eax, %xmm7
-        mulsd     %xmm0, %xmm1
-        movq      log2(%rip), %xmm6
-        movapd    coeff(%rip), %xmm3
-        subsd     %xmm2, %xmm5
-        andl      $16711680, %edx
-        shrl      $12, %edx
-        movapd    (%r11,%rdx), %xmm0
-        movapd    16+coeff(%rip), %xmm4
-        addsd     %xmm5, %xmm1
-        movapd    32+coeff(%rip), %xmm2
-        mulsd     %xmm7, %xmm6
-        movddup   %xmm1, %xmm5
-        mulsd     8+log2(%rip), %xmm7
-        mulsd     %xmm1, %xmm3
-        addsd     %xmm6, %xmm0
-        mulpd     %xmm5, %xmm4
-        mulpd     %xmm5, %xmm5
-        movddup   %xmm0, %xmm6
-        addsd     %xmm1, %xmm0
-        addpd     %xmm2, %xmm4
-        mulpd     %xmm5, %xmm3
-        subsd     %xmm0, %xmm6
-        mulsd     %xmm1, %xmm4
-        pshufd    $238, %xmm0, %xmm2
-        addsd     %xmm6, %xmm1
-        mulsd     %xmm5, %xmm5
-        addsd     %xmm2, %xmm7
-        addpd     %xmm3, %xmm4
-        addsd     %xmm7, %xmm1
-        mulpd     %xmm5, %xmm4
-        addsd     %xmm4, %xmm1
-        pshufd    $238, %xmm4, %xmm5
-        addsd     %xmm5, %xmm1
-        addsd     %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-        movq      (%rsp), %xmm0
-        movq      (%rsp), %xmm1
-        addl      $16, %eax
-        cmpl      $32768, %eax
-        jae       .L_2TAG_PACKET_2.0.2
-        cmpl      $16, %eax
-        jb        .L_2TAG_PACKET_3.0.2
-.L_2TAG_PACKET_4.0.2:
-        addsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_5.0.2:
-        ja        .L_2TAG_PACKET_4.0.2
-        cmpl      $0, %edx
-        ja        .L_2TAG_PACKET_4.0.2
-        jmp       .L_2TAG_PACKET_6.0.2
-.L_2TAG_PACKET_3.0.2:
-        xorpd     %xmm1, %xmm1
-        addsd     %xmm0, %xmm1
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_7.0.2
-        xorpd     %xmm1, %xmm1
-        movl      $18416, %eax
-        pinsrw    $3, %eax, %xmm1
-        mulsd     %xmm1, %xmm0
-        movq      %xmm0, %xmm1
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        psrlq     $27, %xmm0
-        movl      $18416, %ecx
-        psrld     $2, %xmm0
-        rcpps     %xmm0, %xmm0
-        psllq     $12, %xmm1
-        pshufd    $228, %xmm5, %xmm6
-        psrlq     $12, %xmm1
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_2.0.2:
-        movd      %xmm1, %edx
-        psrlq     $32, %xmm1
-        movd      %xmm1, %ecx
-        addl      %ecx, %ecx
-        cmpl      $-2097152, %ecx
-        jae       .L_2TAG_PACKET_5.0.2
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_6.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm1
-        mulsd     %xmm1, %xmm0
-        movl      $3, 16(%rsp)
-        jmp       .L_2TAG_PACKET_8.0.2
-.L_2TAG_PACKET_7.0.2:
-        xorpd     %xmm1, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm0
-        divsd     %xmm1, %xmm0
-        movl      $2, 16(%rsp)
-.L_2TAG_PACKET_8.0.2:
-        movq      %xmm0, 8(%rsp)
-..B1.3:
-        movq      8(%rsp), %xmm0
-.L_2TAG_PACKET_9.0.2:
-..B1.5:
-        addq      $24, %rsp
-..___tag_value_log.4:
-        ret       
-..___tag_value_log.5:
-END(log)
-# -- End  log
-	.section .rodata, "a"
-	.align 16
-	.align 16
-L_tbl:
-	.long	4277811200
-	.long	1072049730
-	.long	2479318832
-	.long	1026487127
-	.long	2854492160
-	.long	1072033410
-	.long	215631550
-	.long	1025638968
-	.long	1547061248
-	.long	1072017216
-	.long	2886781435
-	.long	1026423395
-	.long	649825280
-	.long	1072001146
-	.long	4281533405
-	.long	1024038923
-	.long	646346752
-	.long	1071985198
-	.long	1562735921
-	.long	1023790276
-	.long	2203734016
-	.long	1071969370
-	.long	1838397691
-	.long	3173936209
-	.long	1872169984
-	.long	1071953661
-	.long	3981202460
-	.long	1022325013
-	.long	669557760
-	.long	1071938069
-	.long	4182597802
-	.long	3173174122
-	.long	4076413952
-	.long	1071922591
-	.long	1209029111
-	.long	3170736207
-	.long	556125184
-	.long	1071907228
-	.long	821086028
-	.long	3173437049
-	.long	204914688
-	.long	1071891976
-	.long	2097025986
-	.long	3171071798
-	.long	387545088
-	.long	1071876834
-	.long	3142936996
-	.long	3173092218
-	.long	2912783360
-	.long	1071861800
-	.long	2502420140
-	.long	1024505919
-	.long	1144260608
-	.long	1071846874
-	.long	3315658140
-	.long	3173469843
-	.long	1471209472
-	.long	1071832053
-	.long	129621009
-	.long	3172443877
-	.long	1829683200
-	.long	1071817336
-	.long	3885467693
-	.long	1025535275
-	.long	288676864
-	.long	1071802722
-	.long	86139472
-	.long	3171639793
-	.long	3636378624
-	.long	1071788208
-	.long	1850238587
-	.long	1024654342
-	.long	1606817792
-	.long	1071773795
-	.long	3388899795
-	.long	3173675586
-	.long	1236164608
-	.long	1071759480
-	.long	3983599207
-	.long	1020046558
-	.long	1089616896
-	.long	1071745262
-	.long	4171974224
-	.long	1024773198
-	.long	4143093760
-	.long	1071731139
-	.long	2727587401
-	.long	3173965207
-	.long	600267776
-	.long	1071717112
-	.long	3147685042
-	.long	3173353031
-	.long	2249313280
-	.long	1071703177
-	.long	125835074
-	.long	1025255832
-	.long	3805303808
-	.long	1071689334
-	.long	2289991207
-	.long	1025460331
-	.long	87278592
-	.long	1071675583
-	.long	1106114045
-	.long	1025933602
-	.long	3195405312
-	.long	1071661920
-	.long	3885316576
-	.long	3171206239
-	.long	3853649920
-	.long	1071648346
-	.long	2977069852
-	.long	3171236771
-	.long	2944026624
-	.long	1071625048
-	.long	1008093493
-	.long	1023444474
-	.long	3993180160
-	.long	1071598247
-	.long	1862355595
-	.long	1024642533
-	.long	1454641152
-	.long	1071571617
-	.long	1514603089
-	.long	1026500596
-	.long	3286085632
-	.long	1071545154
-	.long	1400028424
-	.long	3173279056
-	.long	438773760
-	.long	1071518858
-	.long	120727864
-	.long	3172148914
-	.long	1212979200
-	.long	1071492725
-	.long	1625055594
-	.long	3172901933
-	.long	1189017600
-	.long	1071466754
-	.long	3920062376
-	.long	1025727407
-	.long	403064832
-	.long	1071440943
-	.long	1053271728
-	.long	3171391427
-	.long	3343210496
-	.long	1071415289
-	.long	3243395502
-	.long	3173627613
-	.long	1765777408
-	.long	1071389792
-	.long	2145968512
-	.long	1026354304
-	.long	461430784
-	.long	1071364449
-	.long	4094322285
-	.long	1026021467
-	.long	71706624
-	.long	1071339258
-	.long	763632021
-	.long	1024496933
-	.long	1380503552
-	.long	1071314217
-	.long	1383547992
-	.long	3173088453
-	.long	1015732224
-	.long	1071289325
-	.long	3198646877
-	.long	1025390322
-	.long	35977216
-	.long	1071264580
-	.long	2141026805
-	.long	1025754693
-	.long	3927306240
-	.long	1071239979
-	.long	282116272
-	.long	3173394334
-	.long	1125341184
-	.long	1071215523
-	.long	2768427504
-	.long	3172279059
-	.long	1666971648
-	.long	1071191208
-	.long	786837629
-	.long	3172427445
-	.long	2827694080
-	.long	1071167033
-	.long	3857122416
-	.long	3173014241
-	.long	2003683328
-	.long	1071142997
-	.long	859010954
-	.long	1026545007
-	.long	1004017664
-	.long	1071119098
-	.long	3356644970
-	.long	3173458064
-	.long	1753020416
-	.long	1071095334
-	.long	788338552
-	.long	1026157693
-	.long	1992718336
-	.long	1071071704
-	.long	1239179443
-	.long	1026394889
-	.long	3870234624
-	.long	1071048206
-	.long	2082614663
-	.long	1024926053
-	.long	1050437632
-	.long	1071024840
-	.long	660007840
-	.long	1025548499
-	.long	188395520
-	.long	1071001603
-	.long	3878792704
-	.long	3173889571
-	.long	3747176448
-	.long	1070978493
-	.long	144991708
-	.long	3171552042
-	.long	1405669376
-	.long	1070955511
-	.long	3999088879
-	.long	1025486317
-	.long	121151488
-	.long	1070932654
-	.long	2170865497
-	.long	1026473584
-	.long	2652319744
-	.long	1070909920
-	.long	453695652
-	.long	3173916809
-	.long	3262236672
-	.long	1070887309
-	.long	157800053
-	.long	3173984206
-	.long	601221120
-	.long	1070864820
-	.long	3968917661
-	.long	1023992886
-	.long	1999843328
-	.long	1070842450
-	.long	3053895004
-	.long	1024998228
-	.long	1992167424
-	.long	1070820199
-	.long	2968614856
-	.long	1024552653
-	.long	3788726272
-	.long	1070798065
-	.long	3542170808
-	.long	3173573242
-	.long	2094829568
-	.long	1070776048
-	.long	1246758132
-	.long	1026202874
-	.long	288675840
-	.long	1070754146
-	.long	3747328950
-	.long	1026331585
-	.long	1829681152
-	.long	1070732357
-	.long	3125197546
-	.long	1024100318
-	.long	1666869248
-	.long	1070710681
-	.long	1363656119
-	.long	1026336493
-	.long	3417110528
-	.long	1070689116
-	.long	4154791553
-	.long	1026267853
-	.long	2183653376
-	.long	1070667662
-	.long	1671819292
-	.long	3173785870
-	.long	1734434816
-	.long	1070646317
-	.long	373091049
-	.long	1025972363
-	.long	1615681536
-	.long	1070625080
-	.long	384650897
-	.long	1022926043
-	.long	1445382144
-	.long	1070603950
-	.long	344320330
-	.long	3172397196
-	.long	1823715328
-	.long	1070569756
-	.long	3389841200
-	.long	1025231852
-	.long	3839688704
-	.long	1070527917
-	.long	1706790417
-	.long	3167363349
-	.long	4293332992
-	.long	1070486286
-	.long	1614935088
-	.long	1019351591
-	.long	2966720512
-	.long	1070444861
-	.long	4145393717
-	.long	3173711658
-	.long	4066729984
-	.long	1070403639
-	.long	1974925028
-	.long	3171437182
-	.long	3337621504
-	.long	1070362619
-	.long	3314953170
-	.long	3169971314
-	.long	943448064
-	.long	1070321799
-	.long	1498682038
-	.long	3173862340
-	.long	1465634816
-	.long	1070281176
-	.long	1319952810
-	.long	3171693965
-	.long	1015734272
-	.long	1070240749
-	.long	1347821929
-	.long	3173544515
-	.long	118001664
-	.long	1070200516
-	.long	1751482746
-	.long	1026134093
-	.long	3707174912
-	.long	1070160474
-	.long	1486946159
-	.long	1023930920
-	.long	3946381312
-	.long	1070120623
-	.long	2867408081
-	.long	3171368276
-	.long	1699848192
-	.long	1070080961
-	.long	2590187139
-	.long	1025379803
-	.long	2235846656
-	.long	1070041485
-	.long	1888568069
-	.long	3172754960
-	.long	2339729408
-	.long	1070002194
-	.long	3852214753
-	.long	3173323149
-	.long	3196850176
-	.long	1069963086
-	.long	742141560
-	.long	1025101707
-	.long	1800683520
-	.long	1069924160
-	.long	3949500444
-	.long	3172102179
-	.long	3835801600
-	.long	1069885413
-	.long	3848895943
-	.long	1025913832
-	.long	2201202688
-	.long	1069846845
-	.long	1425913464
-	.long	1025868665
-	.long	2778279936
-	.long	1069808453
-	.long	2120889677
-	.long	3173831128
-	.long	2954203136
-	.long	1069770236
-	.long	592147081
-	.long	1019621288
-	.long	210141184
-	.long	1069732193
-	.long	3414275233
-	.long	1023647084
-	.long	709476352
-	.long	1069694321
-	.long	2413027164
-	.long	1024462115
-	.long	2116284416
-	.long	1069656619
-	.long	1144559924
-	.long	1026336654
-	.long	2183651328
-	.long	1069619086
-	.long	3459057650
-	.long	1025634168
-	.long	3047047168
-	.long	1069581720
-	.long	1879674924
-	.long	3173508573
-	.long	970711040
-	.long	1069541521
-	.long	1335954173
-	.long	3173332182
-	.long	2198478848
-	.long	1069467449
-	.long	2951103968
-	.long	3173892200
-	.long	1669611520
-	.long	1069393703
-	.long	531044147
-	.long	1025149248
-	.long	29114368
-	.long	1069320280
-	.long	3327831251
-	.long	1025918673
-	.long	2376949760
-	.long	1069247176
-	.long	737634533
-	.long	3172176000
-	.long	1085390848
-	.long	1069174390
-	.long	3108243400
-	.long	3171828406
-	.long	1566130176
-	.long	1069101918
-	.long	985483226
-	.long	1025708380
-	.long	792780800
-	.long	1069029758
-	.long	4184866295
-	.long	1024426204
-	.long	183156736
-	.long	1068957907
-	.long	2845699378
-	.long	1022107277
-	.long	1301782528
-	.long	1068886362
-	.long	1012735262
-	.long	3173804294
-	.long	1562411008
-	.long	1068815121
-	.long	2197086703
-	.long	3170187813
-	.long	2815549440
-	.long	1068744181
-	.long	2782613207
-	.long	1026345054
-	.long	2756124672
-	.long	1068673540
-	.long	2929486205
-	.long	3173037800
-	.long	3511050240
-	.long	1068603195
-	.long	1443733147
-	.long	3173331549
-	.long	3047047168
-	.long	1068533144
-	.long	1879674924
-	.long	3172459997
-	.long	3221667840
-	.long	1068427825
-	.long	1338588027
-	.long	3171815742
-	.long	3453861888
-	.long	1068288883
-	.long	1205348359
-	.long	3172624626
-	.long	3506110464
-	.long	1068150514
-	.long	893105198
-	.long	1025571866
-	.long	346013696
-	.long	1068012714
-	.long	3495569021
-	.long	3172563349
-	.long	4074029056
-	.long	1067875476
-	.long	3961106338
-	.long	3171065595
-	.long	3559784448
-	.long	1067738798
-	.long	1975385384
-	.long	3173783155
-	.long	797769728
-	.long	1067602675
-	.long	3760305787
-	.long	1026047642
-	.long	2313633792
-	.long	1067467101
-	.long	1559353171
-	.long	1023480256
-	.long	3960766464
-	.long	1067213778
-	.long	1067365107
-	.long	1025865926
-	.long	684261376
-	.long	1066944805
-	.long	844762164
-	.long	3173687482
-	.long	630718464
-	.long	1066676905
-	.long	2458269694
-	.long	1024033081
-	.long	1486061568
-	.long	1066410070
-	.long	115537874
-	.long	3173243995
-	.long	2743664640
-	.long	1065886792
-	.long	3665098304
-	.long	3173471607
-	.long	1971912704
-	.long	1065357333
-	.long	2577214440
-	.long	3171993451
-	.long	1498939392
-	.long	1064306693
-	.long	3409036923
-	.long	1025599151
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.type	L_tbl,@object
-	.size	L_tbl,2064
-	.align 16
-log2:
-	.long	4277811200
-	.long	1067855426
-	.long	2479318832
-	.long	1022292823
-	.type	log2,@object
-	.size	log2,16
-	.align 16
-coeff:
-	.long	2454267026
-	.long	1069697316
-	.long	0
-	.long	3218079744
-	.long	1030730101
-	.long	3217380702
-	.long	1431655765
-	.long	1070945621
-	.long	2576980378
-	.long	1070176665
-	.long	0
-	.long	3219128320
-	.type	coeff,@object
-	.size	coeff,48
-	.data
-	.section .note.GNU-stack, ""
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_log.1-.
-	.4byte ..___tag_value_log.5-..___tag_value_log.1
-	.2byte 0x0400
-	.4byte ..___tag_value_log.3-..___tag_value_log.1
-	.2byte 0x200e
-	.byte 0x04
-	.4byte ..___tag_value_log.4-..___tag_value_log.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/libm/x86_64/e_pow.S b/libm/x86_64/e_pow.S
deleted file mode 100644
index 9ec3828..0000000
--- a/libm/x86_64/e_pow.S
+++ /dev/null
@@ -1,4282 +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)
-//
-//    log2(x) calculation:
-//
-//    Get B~1/mx based on the output of rcpps instruction (B0)
-//    B = int((B0*LH*2^9+0.5))/2^9
-//    LH is a short approximation for log2(e)
-//
-//    Reduced argument, scaled by LH:
-//                r=B*mx-LH (computed accurately in high and low parts)
-//
-//    log2(x) result:  k - log2(B) + p(r)
-//             p(r) is a degree 8 polynomial
-//             -log2(B) read from data table (high, low parts)
-//             log2(x) is formed from high and low parts
-//    For |x| in [1-1/32, 1+1/16), a slower but more accurate computation
-//    based om the same table design is performed.
-//
-//   Main path is taken if | floor(log2(|log2(|x|)|) + floor(log2|y|) | < 8,
-//   to filter out all potential OF/UF cases.
-//   exp2(y*log2(x)) is computed using an 8-bit index table and a degree 5
-//   polynomial
-//
-// Special cases:
-//  pow(-0,y) = -INF and raises the divide-by-zero exception for y an odd 
-//  integer < 0.
-//  pow(-0,y) = +INF and raises the divide-by-zero exception for y < 0 and 
-//  not an odd integer.
-//  pow(-0,y) = -0 for y an odd integer > 0.
-//  pow(-0,y) = +0 for y > 0 and not an odd integer.
-//  pow(-1,-INF) = 1.
-//  pow(+1,y) = 1 for any y, even a NaN.
-//  pow(x,-0) = 1 for any x, even a NaN.
-//  pow(x,y) = a NaN and raises the invalid exception for finite x < 0 and
-//  finite non-integer y.
-//  pow(x,-INF) = +INF for |x|<1.
-//  pow(x,-INF) = +0 for |x|>1.
-//  pow(x,+INF) = +0 for |x|<1.
-//  pow(x,+INF) = +INF for |x|>1.
-//  pow(-INF,y) = -0 for y an odd integer < 0.
-//  pow(-INF,y) = +0 for y < 0 and not an odd integer.
-//  pow(-INF,y) = -INF for y an odd integer > 0.
-//  pow(-INF,y) = +INF for y > 0 and not an odd integer.
-//  pow(+INF,y) = +0 for y <0.
-//  pow(+INF,y) = +INF for y >0.
-//
-/******************************************************************************/
-
-#include <private/bionic_asm.h>
-# -- Begin  pow
-ENTRY(pow)
-# parameter 1: %xmm0
-# parameter 2: %xmm1
-..B1.1:
-..___tag_value_pow.1:
-        subq      $40, %rsp
-..___tag_value_pow.3:
-        movsd     %xmm0, 8(%rsp)
-        movsd     %xmm1, 16(%rsp)
-..B1.2:
-        pextrw    $3, %xmm0, %eax
-        xorpd     %xmm2, %xmm2
-        movq      $0x3ff0000000000000, %r9
-        movd      %r9, %xmm2
-        movl      $1069088768, %r8d
-        movd      %r8, %xmm7
-        xorpd     %xmm1, %xmm1
-        movq      $0x77f0000000000000, %r10
-        movd      %r10, %xmm1
-        movq      %xmm0, %xmm3
-        movl      $32752, %edx
-        andl      %eax, %edx
-        subl      $16368, %edx
-        movl      %edx, %ecx
-        sarl      $31, %edx
-        addl      %edx, %ecx
-        xorl      %edx, %ecx
-        orpd      %xmm2, %xmm0
-        movapd    HIGHSIGMASK(%rip), %xmm6
-        psrlq     $27, %xmm0
-        movq      LOG2_E(%rip), %xmm2
-        psrld     $2, %xmm0
-        addl      $16, %ecx
-        bsr       %ecx, %ecx
-        rcpps     %xmm0, %xmm0
-        psllq     $12, %xmm3
-        movl      $8192, %r11d
-        movd      %r11, %xmm4
-        psrlq     $12, %xmm3
-        subl      $16, %eax
-        cmpl      $32736, %eax
-        jae       .L_2TAG_PACKET_0.0.2
-        movq      $0, %r8
-.L_2TAG_PACKET_1.0.2:
-        mulss     %xmm7, %xmm0
-        movl      $-1, %edx
-        subl      $4, %ecx
-        shll      %cl, %edx
-        shlq      $32, %rdx
-        movd      %rdx, %xmm5
-        orpd      %xmm1, %xmm3
-        subl      $16351, %eax
-        cmpl      $1, %eax
-        jbe       .L_2TAG_PACKET_2.0.2
-        paddd     %xmm4, %xmm0
-        andpd     %xmm3, %xmm5
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-.L_2TAG_PACKET_3.0.2:
-        subsd     %xmm5, %xmm3
-        andpd     %xmm6, %xmm0
-        subl      $1, %eax
-        sarl      $4, %eax
-        cvtsi2sd  %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-.L_2TAG_PACKET_4.0.2:
-        mulsd     %xmm0, %xmm3
-        movapd    coeff(%rip), %xmm1
-        lea       L_tbl(%rip), %r11
-        subsd     %xmm2, %xmm5
-        movapd    16+coeff(%rip), %xmm4
-        movl      %eax, %ecx
-        sarl      $31, %eax
-        addl      %eax, %ecx
-        xorl      %ecx, %eax
-        addl      $1, %eax
-        bsr       %eax, %eax
-        unpcklpd  %xmm3, %xmm5
-        movapd    32+coeff(%rip), %xmm6
-        addsd     %xmm5, %xmm3
-        andl      $16760832, %edx
-        shrl      $10, %edx
-        addpd     -3648(%r11,%rdx), %xmm5
-        movapd    48+coeff(%rip), %xmm0
-        pshufd    $68, %xmm3, %xmm2
-        mulsd     %xmm3, %xmm3
-        mulpd     %xmm2, %xmm1
-        mulpd     %xmm2, %xmm4
-        addsd     %xmm7, %xmm5
-        mulsd     %xmm3, %xmm2
-        addpd     %xmm1, %xmm6
-        mulsd     %xmm3, %xmm3
-        addpd     %xmm4, %xmm0
-        movq      16(%rsp), %xmm1
-        movw      22(%rsp), %cx
-        pshufd    $238, %xmm5, %xmm7
-        movq      HIGHMASK_Y(%rip), %xmm4
-        mulpd     %xmm2, %xmm6
-        pshufd    $68, %xmm3, %xmm3
-        mulpd     %xmm2, %xmm0
-        shll      $4, %eax
-        subl      $15872, %eax
-        andl      $32752, %ecx
-        addl      %ecx, %eax
-        mulpd     %xmm6, %xmm3
-        cmpl      $624, %eax
-        jae       .L_2TAG_PACKET_5.0.2
-        xorpd     %xmm6, %xmm6
-        movl      $17080, %edx
-        pinsrw    $3, %edx, %xmm6
-        movq      %xmm1, %xmm2
-        andpd     %xmm1, %xmm4
-        subsd     %xmm4, %xmm1
-        mulsd     %xmm5, %xmm4
-        addsd     %xmm7, %xmm0
-        mulsd     %xmm5, %xmm1
-        movq      %xmm6, %xmm7
-        addsd     %xmm4, %xmm6
-        lea       T_exp(%rip), %r11
-        addpd     %xmm0, %xmm3
-        movd      %xmm6, %edx
-        subsd     %xmm7, %xmm6
-        pshufd    $238, %xmm3, %xmm0
-        subsd     %xmm6, %xmm4
-        addsd     %xmm3, %xmm0
-        movl      %edx, %ecx
-        andl      $255, %edx
-        addl      %edx, %edx
-        movapd    (%r11,%rdx,8), %xmm5
-        addsd     %xmm1, %xmm4
-        mulsd     %xmm0, %xmm2
-        movapd    e_coeff(%rip), %xmm7
-        movapd    16+e_coeff(%rip), %xmm3
-        shll      $12, %ecx
-        xorl      %r8d, %ecx
-        andl      $-1048576, %ecx
-        movd      %rcx, %xmm6
-        addsd     %xmm4, %xmm2
-        movq      $0x3fe62e42fefa39ef, %r9
-        movd      %r9, %xmm1
-        pshufd    $68, %xmm2, %xmm0
-        pshufd    $68, %xmm2, %xmm4
-        mulsd     %xmm2, %xmm1
-        pshufd    $17, %xmm6, %xmm6
-        mulpd     %xmm0, %xmm0
-        mulpd     %xmm4, %xmm7
-        paddd     %xmm6, %xmm5
-        mulsd     %xmm5, %xmm1
-        pshufd    $238, %xmm5, %xmm6
-        mulsd     %xmm0, %xmm0
-        addpd     %xmm7, %xmm3
-        addsd     %xmm6, %xmm1
-        mulpd     %xmm3, %xmm0
-        pshufd    $238, %xmm0, %xmm3
-        mulsd     %xmm5, %xmm0
-        mulsd     %xmm5, %xmm3
-        addsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm0
-        addsd     %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_0.0.2:
-        addl      $16, %eax
-        movl      $32752, %edx
-        andl      %eax, %edx
-        cmpl      $32752, %edx
-        je        .L_2TAG_PACKET_6.0.2
-        testl     $32768, %eax
-        jne       .L_2TAG_PACKET_7.0.2
-.L_2TAG_PACKET_8.0.2:
-        movq      8(%rsp), %xmm0
-        movq      8(%rsp), %xmm3
-        movd      %xmm3, %edx
-        psrlq     $32, %xmm3
-        movd      %xmm3, %ecx
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_9.0.2
-        xorpd     %xmm3, %xmm3
-        movl      $18416, %eax
-        pinsrw    $3, %eax, %xmm3
-        mulsd     %xmm3, %xmm0
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        movq      %xmm0, %xmm3
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        movl      $18416, %ecx
-        psrlq     $27, %xmm0
-        movq      LOG2_E(%rip), %xmm2
-        psrld     $2, %xmm0
-        rcpps     %xmm0, %xmm0
-        psllq     $12, %xmm3
-        movapd    HIGHSIGMASK(%rip), %xmm6
-        psrlq     $12, %xmm3
-        mulss     %xmm7, %xmm0
-        movl      $-1024, %edx
-        movd      %edx, %xmm5
-        orpd      %xmm1, %xmm3
-        paddd     %xmm4, %xmm0
-        psllq     $32, %xmm5
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm3, %xmm5
-        movl      $0, %r8d
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm3
-        andl      $32752, %eax
-        subl      $18416, %eax
-        sarl      $4, %eax
-        cvtsi2sd  %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_10.0.2:
-        movq      8(%rsp), %xmm0
-        movq      8(%rsp), %xmm3
-        movd      %xmm3, %edx
-        psrlq     $32, %xmm3
-        movd      %xmm3, %ecx
-        orl       %ecx, %edx
-        cmpl      $0, %edx
-        je        .L_2TAG_PACKET_9.0.2
-        xorpd     %xmm3, %xmm3
-        movl      $18416, %eax
-        pinsrw    $3, %eax, %xmm3
-        mulsd     %xmm3, %xmm0
-        xorpd     %xmm2, %xmm2
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm2
-        movq      %xmm0, %xmm3
-        pextrw    $3, %xmm0, %eax
-        orpd      %xmm2, %xmm0
-        movl      $18416, %ecx
-        psrlq     $27, %xmm0
-        movq      LOG2_E(%rip), %xmm2
-        psrld     $2, %xmm0
-        rcpps     %xmm0, %xmm0
-        psllq     $12, %xmm3
-        movapd    HIGHSIGMASK(%rip), %xmm6
-        psrlq     $12, %xmm3
-        mulss     %xmm7, %xmm0
-        movl      $-1024, %edx
-        movd      %edx, %xmm5
-        orpd      %xmm1, %xmm3
-        paddd     %xmm4, %xmm0
-        psllq     $32, %xmm5
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        andpd     %xmm3, %xmm5
-        movl      $-2147483648, %r8d
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm3
-        andl      $32752, %eax
-        subl      $18416, %eax
-        sarl      $4, %eax
-        cvtsi2sd  %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-        jmp       .L_2TAG_PACKET_4.0.2
-.L_2TAG_PACKET_5.0.2:
-        cmpl      $0, %eax
-        jl        .L_2TAG_PACKET_11.0.2
-        cmpl      $736, %eax
-        jae       .L_2TAG_PACKET_12.0.2
-        addsd     %xmm7, %xmm0
-        movq      HALFMASK(%rip), %xmm2
-        addpd     %xmm0, %xmm3
-        xorpd     %xmm6, %xmm6
-        movl      $17080, %eax
-        pinsrw    $3, %eax, %xmm6
-        pshufd    $238, %xmm3, %xmm0
-        addsd     %xmm3, %xmm0
-        movq      %xmm5, %xmm3
-        addsd     %xmm0, %xmm5
-        movq      %xmm2, %xmm4
-        subsd     %xmm5, %xmm3
-        movq      %xmm5, %xmm7
-        andpd     %xmm2, %xmm5
-        movq      %xmm1, %xmm2
-        andpd     %xmm1, %xmm4
-        subsd     %xmm5, %xmm7
-        addsd     %xmm3, %xmm0
-        subsd     %xmm4, %xmm1
-        mulsd     %xmm5, %xmm4
-        addsd     %xmm7, %xmm0
-        mulsd     %xmm0, %xmm2
-        movq      %xmm6, %xmm7
-        mulsd     %xmm5, %xmm1
-        addsd     %xmm4, %xmm6
-        movd      %xmm6, %eax
-        subsd     %xmm7, %xmm6
-        lea       T_exp(%rip), %r11
-        addsd     %xmm1, %xmm2
-        movapd    e_coeff(%rip), %xmm7
-        movapd    16+e_coeff(%rip), %xmm3
-        subsd     %xmm6, %xmm4
-        pextrw    $3, %xmm6, %edx
-        movl      %eax, %ecx
-        andl      $255, %eax
-        addl      %eax, %eax
-        movapd    (%r11,%rax,8), %xmm5
-        addsd     %xmm4, %xmm2
-        sarl      $8, %ecx
-        movl      %ecx, %eax
-        sarl      $1, %ecx
-        subl      %ecx, %eax
-        shll      $20, %ecx
-        xorl      %r8d, %ecx
-        movd      %ecx, %xmm6
-        movq      32+e_coeff(%rip), %xmm1
-        andl      $32767, %edx
-        cmpl      $16529, %edx
-        ja        .L_2TAG_PACKET_12.0.2
-        pshufd    $68, %xmm2, %xmm0
-        pshufd    $68, %xmm2, %xmm4
-        mulpd     %xmm0, %xmm0
-        mulpd     %xmm4, %xmm7
-        pshufd    $17, %xmm6, %xmm6
-        mulsd     %xmm2, %xmm1
-        mulsd     %xmm0, %xmm0
-        paddd     %xmm6, %xmm5
-        addpd     %xmm7, %xmm3
-        mulsd     %xmm5, %xmm1
-        pshufd    $238, %xmm5, %xmm6
-        mulpd     %xmm3, %xmm0
-        addsd     %xmm6, %xmm1
-        pshufd    $238, %xmm0, %xmm3
-        mulsd     %xmm5, %xmm0
-        mulsd     %xmm5, %xmm3
-        shll      $4, %eax
-        xorpd     %xmm4, %xmm4
-        addl      $16368, %eax
-        pinsrw    $3, %eax, %xmm4
-        addsd     %xmm1, %xmm0
-        addsd     %xmm3, %xmm0
-        movq      %xmm0, %xmm1
-        addsd     %xmm5, %xmm0
-        mulsd     %xmm4, %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        je        .L_2TAG_PACKET_13.0.2
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_14.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_6.0.2:
-        movq      16(%rsp), %xmm1
-        movq      8(%rsp), %xmm0
-        movq      %xmm0, %xmm2
-        movd      %xmm2, %eax
-        psrlq     $20, %xmm2
-        movd      %xmm2, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_15.0.2
-        movd      %xmm1, %eax
-        psrlq     $32, %xmm1
-        movd      %xmm1, %edx
-        movl      %edx, %ecx
-        addl      %edx, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_16.0.2
-        addsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_16.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        movl      $29, (%rsp)
-        jmp       .L_2TAG_PACKET_17.0.2
-.L_2TAG_PACKET_18.0.2:
-        movq      16(%rsp), %xmm0
-        addpd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_15.0.2:
-        movd      %xmm1, %eax
-        movq      %xmm1, %xmm2
-        psrlq     $32, %xmm1
-        movd      %xmm1, %edx
-        movl      %edx, %ecx
-        addl      %edx, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_19.0.2
-        pextrw    $3, %xmm2, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %eax
-        jne       .L_2TAG_PACKET_20.0.2
-        movd      %xmm2, %eax
-        psrlq     $20, %xmm2
-        movd      %xmm2, %edx
-        orl       %edx, %eax
-        jne       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_20.0.2:
-        pextrw    $3, %xmm0, %eax
-        testl     $32768, %eax
-        jne       .L_2TAG_PACKET_21.0.2
-        testl     $-2147483648, %ecx
-        jne       .L_2TAG_PACKET_22.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_23.0.2:
-        movq      16(%rsp), %xmm1
-        movd      %xmm1, %eax
-        testl     $1, %eax
-        jne       .L_2TAG_PACKET_24.0.2
-        testl     $2, %eax
-        jne       .L_2TAG_PACKET_25.0.2
-        jmp       .L_2TAG_PACKET_24.0.2
-.L_2TAG_PACKET_21.0.2:
-        shrl      $20, %ecx
-        andl      $2047, %ecx
-        cmpl      $1075, %ecx
-        ja        .L_2TAG_PACKET_24.0.2
-        je        .L_2TAG_PACKET_26.0.2
-        cmpl      $1074, %ecx
-        ja        .L_2TAG_PACKET_23.0.2
-        cmpl      $1023, %ecx
-        jb        .L_2TAG_PACKET_24.0.2
-        movq      16(%rsp), %xmm1
-        movl      $17208, %eax
-        xorpd     %xmm3, %xmm3
-        pinsrw    $3, %eax, %xmm3
-        movq      %xmm3, %xmm4
-        addsd     %xmm1, %xmm3
-        subsd     %xmm3, %xmm4
-        addsd     %xmm4, %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        jne       .L_2TAG_PACKET_24.0.2
-        movd      %xmm3, %eax
-        andl      $1, %eax
-        je        .L_2TAG_PACKET_24.0.2
-.L_2TAG_PACKET_25.0.2:
-        movq      16(%rsp), %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32768, %eax
-        jne       .L_2TAG_PACKET_27.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_27.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $32768, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_24.0.2:
-        movq      16(%rsp), %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32768, %eax
-        jne       .L_2TAG_PACKET_22.0.2
-        xorpd     %xmm0, %xmm0
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_26.0.2:
-        movq      16(%rsp), %xmm1
-        movd      %xmm1, %eax
-        andl      $1, %eax
-        je        .L_2TAG_PACKET_24.0.2
-        jmp       .L_2TAG_PACKET_25.0.2
-.L_2TAG_PACKET_28.0.2:
-        movd      %xmm1, %eax
-        psrlq     $20, %xmm1
-        movd      %xmm1, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_29.0.2
-        movq      16(%rsp), %xmm0
-        addsd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_29.0.2:
-        movq      8(%rsp), %xmm0
-        pextrw    $3, %xmm0, %eax
-        cmpl      $49136, %eax
-        jne       .L_2TAG_PACKET_30.0.2
-        movd      %xmm0, %ecx
-        psrlq     $20, %xmm0
-        movd      %xmm0, %edx
-        orl       %edx, %ecx
-        jne       .L_2TAG_PACKET_30.0.2
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_30.0.2:
-        movq      16(%rsp), %xmm1
-        andl      $32752, %eax
-        subl      $16368, %eax
-        pextrw    $3, %xmm1, %edx
-        xorpd     %xmm0, %xmm0
-        xorl      %edx, %eax
-        andl      $32768, %eax
-        je        .L_2TAG_PACKET_31.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_31.0.2:
-        movl      $32752, %ecx
-        pinsrw    $3, %ecx, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_32.0.2:
-        movd      %xmm1, %eax
-        cmpl      $17184, %edx
-        ja        .L_2TAG_PACKET_33.0.2
-        testl     $1, %eax
-        jne       .L_2TAG_PACKET_34.0.2
-        testl     $2, %eax
-        je        .L_2TAG_PACKET_35.0.2
-        jmp       .L_2TAG_PACKET_36.0.2
-.L_2TAG_PACKET_33.0.2:
-        testl     $1, %eax
-        je        .L_2TAG_PACKET_35.0.2
-        jmp       .L_2TAG_PACKET_36.0.2
-.L_2TAG_PACKET_7.0.2:
-        movq      8(%rsp), %xmm2
-        movd      %xmm2, %eax
-        psrlq     $31, %xmm2
-        movd      %xmm2, %ecx
-        orl       %ecx, %eax
-        je        .L_2TAG_PACKET_9.0.2
-        movq      16(%rsp), %xmm1
-        pextrw    $3, %xmm1, %edx
-        movd      %xmm1, %eax
-        movq      %xmm1, %xmm2
-        psrlq     $32, %xmm2
-        movd      %xmm2, %ecx
-        addl      %ecx, %ecx
-        orl       %eax, %ecx
-        je        .L_2TAG_PACKET_37.0.2
-        andl      $32752, %edx
-        cmpl      $32752, %edx
-        je        .L_2TAG_PACKET_28.0.2
-        cmpl      $17200, %edx
-        ja        .L_2TAG_PACKET_35.0.2
-        cmpl      $17184, %edx
-        jae       .L_2TAG_PACKET_32.0.2
-        cmpl      $16368, %edx
-        jb        .L_2TAG_PACKET_34.0.2
-        movl      $17208, %eax
-        xorpd     %xmm2, %xmm2
-        pinsrw    $3, %eax, %xmm2
-        movq      %xmm2, %xmm4
-        addsd     %xmm1, %xmm2
-        subsd     %xmm2, %xmm4
-        addsd     %xmm4, %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32767, %eax
-        jne       .L_2TAG_PACKET_34.0.2
-        movd      %xmm2, %eax
-        andl      $1, %eax
-        je        .L_2TAG_PACKET_35.0.2
-.L_2TAG_PACKET_36.0.2:
-        xorpd     %xmm1, %xmm1
-        movl      $30704, %edx
-        pinsrw    $3, %edx, %xmm1
-        movq      LOG2_E(%rip), %xmm2
-        movq      8(%rsp), %xmm4
-        pextrw    $3, %xmm4, %eax
-        movl      $8192, %edx
-        movd      %edx, %xmm4
-        andl      $32767, %eax
-        subl      $16, %eax
-        jl        .L_2TAG_PACKET_10.0.2
-        movl      %eax, %edx
-        andl      $32752, %edx
-        subl      $16368, %edx
-        movl      %edx, %ecx
-        sarl      $31, %edx
-        addl      %edx, %ecx
-        xorl      %edx, %ecx
-        addl      $16, %ecx
-        bsr       %ecx, %ecx
-        movl      $-2147483648, %r8d
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_34.0.2:
-        xorpd     %xmm1, %xmm1
-        movl      $32752, %eax
-        pinsrw    $3, %eax, %xmm1
-        xorpd     %xmm0, %xmm0
-        mulsd     %xmm1, %xmm0
-        movl      $28, (%rsp)
-        jmp       .L_2TAG_PACKET_17.0.2
-.L_2TAG_PACKET_35.0.2:
-        xorpd     %xmm1, %xmm1
-        movl      $30704, %edx
-        pinsrw    $3, %edx, %xmm1
-        movq      LOG2_E(%rip), %xmm2
-        movq      8(%rsp), %xmm4
-        pextrw    $3, %xmm4, %eax
-        movl      $8192, %edx
-        movd      %edx, %xmm4
-        andl      $32767, %eax
-        subl      $16, %eax
-        jl        .L_2TAG_PACKET_8.0.2
-        movl      %eax, %edx
-        andl      $32752, %edx
-        subl      $16368, %edx
-        movl      %edx, %ecx
-        sarl      $31, %edx
-        addl      %edx, %ecx
-        xorl      %edx, %ecx
-        addl      $16, %ecx
-        bsr       %ecx, %ecx
-        movl      $0, %r8d
-        jmp       .L_2TAG_PACKET_1.0.2
-.L_2TAG_PACKET_19.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_22.0.2:
-        xorpd     %xmm0, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_11.0.2:
-        addl      $384, %eax
-        cmpl      $0, %eax
-        jl        .L_2TAG_PACKET_38.0.2
-        mulsd     %xmm1, %xmm5
-        addsd     %xmm7, %xmm0
-        shrl      $31, %r8d
-        addpd     %xmm0, %xmm3
-        pshufd    $238, %xmm3, %xmm0
-        addsd     %xmm0, %xmm3
-        lea       log2(%rip), %r11
-        movq      (%r11,%r8,8), %xmm4
-        mulsd     %xmm3, %xmm1
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        shll      $15, %r8d
-        orl       %r8d, %eax
-        pinsrw    $3, %eax, %xmm0
-        addsd     %xmm1, %xmm5
-        mulsd     %xmm4, %xmm5
-        addsd     %xmm5, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_38.0.2:
-.L_2TAG_PACKET_37.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_39.0.2:
-        xorpd     %xmm0, %xmm0
-        movl      $16368, %eax
-        pinsrw    $3, %eax, %xmm0
-        movl      $26, (%rsp)
-        jmp       .L_2TAG_PACKET_17.0.2
-.L_2TAG_PACKET_9.0.2:
-        movq      16(%rsp), %xmm1
-        movq      %xmm1, %xmm2
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        cmpl      $32752, %eax
-        jne       .L_2TAG_PACKET_40.0.2
-        movd      %xmm2, %eax
-        psrlq     $20, %xmm2
-        movd      %xmm2, %edx
-        orl       %edx, %eax
-        jne       .L_2TAG_PACKET_18.0.2
-.L_2TAG_PACKET_40.0.2:
-        movd      %xmm1, %eax
-        psrlq     $32, %xmm1
-        movd      %xmm1, %edx
-        movl      %edx, %ecx
-        addl      %edx, %edx
-        orl       %edx, %eax
-        je        .L_2TAG_PACKET_39.0.2
-        shrl      $21, %edx
-        cmpl      $1075, %edx
-        ja        .L_2TAG_PACKET_41.0.2
-        je        .L_2TAG_PACKET_42.0.2
-        cmpl      $1023, %edx
-        jb        .L_2TAG_PACKET_41.0.2
-        movq      16(%rsp), %xmm1
-        movl      $17208, %eax
-        xorpd     %xmm3, %xmm3
-        pinsrw    $3, %eax, %xmm3
-        movq      %xmm3, %xmm4
-        addsd     %xmm1, %xmm3
-        subsd     %xmm3, %xmm4
-        addsd     %xmm4, %xmm1
-        pextrw    $3, %xmm1, %eax
-        andl      $32752, %eax
-        jne       .L_2TAG_PACKET_41.0.2
-        movd      %xmm3, %eax
-        andl      $1, %eax
-        je        .L_2TAG_PACKET_41.0.2
-.L_2TAG_PACKET_43.0.2:
-        movq      8(%rsp), %xmm0
-        testl     $-2147483648, %ecx
-        jne       .L_2TAG_PACKET_44.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_42.0.2:
-        movq      16(%rsp), %xmm1
-        movd      %xmm1, %eax
-        testl     $1, %eax
-        jne       .L_2TAG_PACKET_43.0.2
-.L_2TAG_PACKET_41.0.2:
-        testl     $-2147483648, %ecx
-        je        .L_2TAG_PACKET_22.0.2
-        xorpd     %xmm0, %xmm0
-.L_2TAG_PACKET_44.0.2:
-        movl      $16368, %eax
-        xorpd     %xmm1, %xmm1
-        pinsrw    $3, %eax, %xmm1
-        divsd     %xmm0, %xmm1
-        movq      %xmm1, %xmm0
-        movl      $27, (%rsp)
-        jmp       .L_2TAG_PACKET_17.0.2
-.L_2TAG_PACKET_12.0.2:
-        movq      8(%rsp), %xmm2
-        movq      16(%rsp), %xmm6
-        pextrw    $3, %xmm2, %eax
-        pextrw    $3, %xmm6, %edx
-        movl      $32752, %ecx
-        andl      %edx, %ecx
-        cmpl      $32752, %ecx
-        je        .L_2TAG_PACKET_45.0.2
-        andl      $32752, %eax
-        subl      $16368, %eax
-        xorl      %eax, %edx
-        testl     $32768, %edx
-        jne       .L_2TAG_PACKET_46.0.2
-.L_2TAG_PACKET_47.0.2:
-        movl      $32736, %eax
-        pinsrw    $3, %eax, %xmm0
-        shrl      $16, %r8d
-        orl       %r8d, %eax
-        pinsrw    $3, %eax, %xmm1
-        mulsd     %xmm1, %xmm0
-.L_2TAG_PACKET_14.0.2:
-        movl      $24, (%rsp)
-        jmp       .L_2TAG_PACKET_17.0.2
-.L_2TAG_PACKET_46.0.2:
-        movl      $16, %eax
-        pinsrw    $3, %eax, %xmm0
-        mulsd     %xmm0, %xmm0
-        testl     $-2147483648, %r8d
-        je        .L_2TAG_PACKET_48.0.2
-        movq      $0x8000000000000000, %r9
-        movd      %r9, %xmm2
-        xorpd     %xmm2, %xmm0
-.L_2TAG_PACKET_48.0.2:
-        movl      $25, (%rsp)
-        jmp       .L_2TAG_PACKET_17.0.2
-.L_2TAG_PACKET_13.0.2:
-        pextrw    $3, %xmm5, %ecx
-        pextrw    $3, %xmm4, %edx
-        movl      $-1, %eax
-        andl      $32752, %ecx
-        subl      $16368, %ecx
-        andl      $32752, %edx
-        addl      %ecx, %edx
-        movl      $-31, %ecx
-        sarl      $4, %edx
-        subl      %edx, %ecx
-        jle       .L_2TAG_PACKET_49.0.2
-        cmpl      $20, %ecx
-        ja        .L_2TAG_PACKET_50.0.2
-        shll      %cl, %eax
-.L_2TAG_PACKET_49.0.2:
-        movd      %eax, %xmm0
-        psllq     $32, %xmm0
-        andpd     %xmm5, %xmm0
-        subsd     %xmm0, %xmm5
-        addsd     %xmm1, %xmm5
-        mulsd     %xmm4, %xmm0
-        mulsd     %xmm4, %xmm5
-        addsd     %xmm5, %xmm0
-.L_2TAG_PACKET_50.0.2:
-        jmp       .L_2TAG_PACKET_48.0.2
-.L_2TAG_PACKET_2.0.2:
-        movw      22(%rsp), %cx
-        movl      $-2147483648, %edx
-        movd      %rdx, %xmm1
-        xorpd     %xmm7, %xmm7
-        paddd     %xmm4, %xmm0
-        movd      %xmm0, %edx
-        psllq     $29, %xmm0
-        paddq     %xmm3, %xmm1
-        andpd     %xmm1, %xmm5
-        andw      $32752, %cx
-        cmpw      $16560, %cx
-        jb        .L_2TAG_PACKET_3.0.2
-        andpd     %xmm6, %xmm0
-        subsd     %xmm5, %xmm3
-        addl      $16351, %eax
-        shrl      $4, %eax
-        subl      $1022, %eax
-        cvtsi2sd  %eax, %xmm7
-        mulpd     %xmm0, %xmm5
-        lea       L_tbl(%rip), %r11
-        movq      coeff_h(%rip), %xmm4
-        mulsd     %xmm0, %xmm3
-        movq      coeff_h(%rip), %xmm6
-        subsd     %xmm2, %xmm5
-        movq      8+coeff_h(%rip), %xmm1
-        pshufd    $68, %xmm3, %xmm2
-        unpcklpd  %xmm3, %xmm5
-        addsd     %xmm5, %xmm3
-        movq      8+coeff_h(%rip), %xmm0
-        andl      $16760832, %edx
-        shrl      $10, %edx
-        addpd     -3648(%r11,%rdx), %xmm7
-        mulsd     %xmm5, %xmm4
-        mulsd     %xmm5, %xmm0
-        mulsd     %xmm2, %xmm6
-        mulsd     %xmm2, %xmm1
-        movq      %xmm5, %xmm2
-        mulsd     %xmm5, %xmm4
-        addsd     %xmm0, %xmm5
-        movq      %xmm7, %xmm0
-        addsd     %xmm3, %xmm2
-        addsd     %xmm5, %xmm7
-        mulsd     %xmm2, %xmm6
-        subsd     %xmm7, %xmm0
-        movq      %xmm7, %xmm2
-        addsd     %xmm4, %xmm7
-        addsd     %xmm5, %xmm0
-        subsd     %xmm7, %xmm2
-        addsd     %xmm2, %xmm4
-        pshufd    $238, %xmm5, %xmm2
-        movq      %xmm7, %xmm5
-        addsd     %xmm2, %xmm7
-        addsd     %xmm0, %xmm4
-        movapd    coeff(%rip), %xmm0
-        subsd     %xmm7, %xmm5
-        addsd     %xmm4, %xmm6
-        movq      %xmm7, %xmm4
-        addsd     %xmm2, %xmm5
-        addsd     %xmm1, %xmm7
-        movapd    64+coeff(%rip), %xmm2
-        subsd     %xmm7, %xmm4
-        addsd     %xmm5, %xmm6
-        addsd     %xmm1, %xmm4
-        pshufd    $238, %xmm7, %xmm5
-        movapd    %xmm7, %xmm1
-        addsd     %xmm5, %xmm7
-        subsd     %xmm7, %xmm1
-        addsd     %xmm5, %xmm1
-        movapd    80+coeff(%rip), %xmm5
-        pshufd    $68, %xmm3, %xmm3
-        addsd     %xmm4, %xmm6
-        addsd     %xmm1, %xmm6
-        movapd    32+coeff(%rip), %xmm1
-        mulpd     %xmm3, %xmm0
-        mulpd     %xmm3, %xmm2
-        pshufd    $68, %xmm3, %xmm4
-        mulpd     %xmm3, %xmm3
-        addpd     %xmm1, %xmm0
-        addpd     %xmm2, %xmm5
-        mulsd     %xmm3, %xmm4
-        movq      HIGHMASK_LOG_X(%rip), %xmm2
-        mulpd     %xmm3, %xmm3
-        movq      16(%rsp), %xmm1
-        movw      22(%rsp), %cx
-        mulpd     %xmm4, %xmm0
-        pextrw    $3, %xmm7, %eax
-        mulpd     %xmm4, %xmm5
-        mulpd     %xmm3, %xmm0
-        movq      8+HIGHMASK_Y(%rip), %xmm4
-        andpd     %xmm7, %xmm2
-        addsd     %xmm6, %xmm5
-        subsd     %xmm2, %xmm7
-        addpd     %xmm0, %xmm5
-        andl      $32752, %eax
-        subl      $16368, %eax
-        andl      $32752, %ecx
-        cmpl      $32752, %ecx
-        je        .L_2TAG_PACKET_45.0.2
-        addl      %eax, %ecx
-        cmpl      $16576, %ecx
-        jae       .L_2TAG_PACKET_51.0.2
-        pshufd    $238, %xmm5, %xmm0
-        andpd     %xmm1, %xmm4
-        movq      %xmm1, %xmm3
-        addsd     %xmm0, %xmm5
-        subsd     %xmm4, %xmm1
-        xorpd     %xmm6, %xmm6
-        movl      $17080, %edx
-        pinsrw    $3, %edx, %xmm6
-        addsd     %xmm5, %xmm7
-        mulsd     %xmm2, %xmm4
-        mulsd     %xmm2, %xmm1
-        movq      %xmm6, %xmm5
-        mulsd     %xmm7, %xmm3
-        addsd     %xmm4, %xmm6
-        addsd     %xmm3, %xmm1
-        movapd    e_coeff(%rip), %xmm7
-        movd      %xmm6, %edx
-        subsd     %xmm5, %xmm6
-        lea       T_exp(%rip), %r11
-        movapd    16+e_coeff(%rip), %xmm3
-        movq      32+e_coeff(%rip), %xmm2
-        subsd     %xmm6, %xmm4
-        movl      %edx, %ecx
-        andl      $255, %edx
-        addl      %edx, %edx
-        movapd    (%r11,%rdx,8), %xmm5
-        addsd     %xmm1, %xmm4
-        pextrw    $3, %xmm6, %edx
-        shrl      $8, %ecx
-        movl      %ecx, %eax
-        shrl      $1, %ecx
-        subl      %ecx, %eax
-        shll      $20, %ecx
-        movd      %ecx, %xmm6
-        pshufd    $68, %xmm4, %xmm0
-        pshufd    $68, %xmm4, %xmm1
-        mulpd     %xmm0, %xmm0
-        mulpd     %xmm1, %xmm7
-        pshufd    $17, %xmm6, %xmm6
-        mulsd     %xmm4, %xmm2
-        andl      $32767, %edx
-        cmpl      $16529, %edx
-        ja        .L_2TAG_PACKET_12.0.2
-        mulsd     %xmm0, %xmm0
-        paddd     %xmm6, %xmm5
-        addpd     %xmm7, %xmm3
-        mulsd     %xmm5, %xmm2
-        pshufd    $238, %xmm5, %xmm6
-        mulpd     %xmm3, %xmm0
-        addsd     %xmm6, %xmm2
-        pshufd    $238, %xmm0, %xmm3
-        addl      $1023, %eax
-        shll      $20, %eax
-        orl       %r8d, %eax
-        movd      %eax, %xmm4
-        mulsd     %xmm5, %xmm0
-        mulsd     %xmm5, %xmm3
-        addsd     %xmm2, %xmm0
-        psllq     $32, %xmm4
-        addsd     %xmm3, %xmm0
-        movq      %xmm0, %xmm1
-        addsd     %xmm5, %xmm0
-        mulsd     %xmm4, %xmm0
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        je        .L_2TAG_PACKET_13.0.2
-        cmpl      $32752, %eax
-        je        .L_2TAG_PACKET_14.0.2
-.L_2TAG_PACKET_52.0.2:
-        jmp       ..B1.5
-.L_2TAG_PACKET_45.0.2:
-        movq      8(%rsp), %xmm0
-        xorpd     %xmm2, %xmm2
-        movl      $49136, %eax
-        pinsrw    $3, %eax, %xmm2
-        addsd     %xmm0, %xmm2
-        pextrw    $3, %xmm2, %eax
-        cmpl      $0, %eax
-        jne       .L_2TAG_PACKET_53.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_53.0.2:
-        movq      16(%rsp), %xmm1
-        movd      %xmm1, %edx
-        movq      %xmm1, %xmm3
-        psrlq     $20, %xmm3
-        movd      %xmm3, %ecx
-        orl       %edx, %ecx
-        je        .L_2TAG_PACKET_54.0.2
-        addsd     %xmm1, %xmm1
-        movq      %xmm1, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_51.0.2:
-        pextrw    $3, %xmm1, %eax
-        pextrw    $3, %xmm2, %ecx
-        xorl      %ecx, %eax
-        testl     $32768, %eax
-        je        .L_2TAG_PACKET_47.0.2
-        jmp       .L_2TAG_PACKET_46.0.2
-.L_2TAG_PACKET_54.0.2:
-        pextrw    $3, %xmm0, %eax
-        andl      $32752, %eax
-        pextrw    $3, %xmm1, %edx
-        xorpd     %xmm0, %xmm0
-        subl      $16368, %eax
-        xorl      %edx, %eax
-        testl     $32768, %eax
-        je        .L_2TAG_PACKET_55.0.2
-        jmp       ..B1.5
-.L_2TAG_PACKET_55.0.2:
-        movl      $32752, %edx
-        pinsrw    $3, %edx, %xmm0
-        jmp       ..B1.5
-.L_2TAG_PACKET_17.0.2:
-        movq      %xmm0, 24(%rsp)
-..B1.3:
-        movq      24(%rsp), %xmm0
-.L_2TAG_PACKET_56.0.2:
-..B1.5:
-        addq      $40, %rsp
-..___tag_value_pow.4:
-        ret       
-..___tag_value_pow.5:
-END(pow)
-# -- End  pow
-	.section .rodata, "a"
-	.align 16
-	.align 16
-HIGHSIGMASK:
-	.long	0
-	.long	4294965248
-	.long	0
-	.long	4294965248
-	.type	HIGHSIGMASK,@object
-	.size	HIGHSIGMASK,16
-	.align 16
-LOG2_E:
-	.long	0
-	.long	1073160192
-	.long	370913857
-	.long	3210587105
-	.type	LOG2_E,@object
-	.size	LOG2_E,16
-	.align 16
-coeff:
-	.long	1841914130
-	.long	3213059448
-	.long	3995341938
-	.long	3214607105
-	.long	2677381210
-	.long	3216320731
-	.long	3011779882
-	.long	3218479542
-	.long	1367832035
-	.long	1066403058
-	.long	2894285243
-	.long	1067936923
-	.long	1215221452
-	.long	1069835102
-	.long	370913857
-	.long	3210587105
-	.long	2677381210
-	.long	3216320731
-	.long	4172642429
-	.long	1056068382
-	.long	1215221451
-	.long	1069835102
-	.long	1092638156
-	.long	3184925618
-	.type	coeff,@object
-	.size	coeff,96
-	.align 16
-L_tbl:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	0
-	.long	536870912
-	.long	1072689162
-	.long	2523013013
-	.long	1046157398
-	.long	3758096384
-	.long	1072685081
-	.long	3851513758
-	.long	3190968952
-	.long	0
-	.long	1072681007
-	.long	2241466466
-	.long	1046044599
-	.long	3221225472
-	.long	1072676937
-	.long	2990928271
-	.long	3193084984
-	.long	3758096384
-	.long	1072672873
-	.long	2905112743
-	.long	3192918576
-	.long	1610612736
-	.long	1072668815
-	.long	3370591264
-	.long	1046051793
-	.long	2147483648
-	.long	1072664762
-	.long	3272361216
-	.long	3193793653
-	.long	3758096384
-	.long	1072660714
-	.long	46546755
-	.long	1043206936
-	.long	3221225472
-	.long	1072656672
-	.long	3017067724
-	.long	3192177962
-	.long	0
-	.long	1072652636
-	.long	3688436631
-	.long	3192814956
-	.long	2684354560
-	.long	1072648604
-	.long	1707461992
-	.long	3193056712
-	.long	2684354560
-	.long	1072644578
-	.long	1188114540
-	.long	3193603086
-	.long	3758096384
-	.long	1072640557
-	.long	3533180564
-	.long	1045459375
-	.long	2684354560
-	.long	1072636542
-	.long	2000337630
-	.long	3193475557
-	.long	2684354560
-	.long	1072632532
-	.long	3698062443
-	.long	3193752766
-	.long	3758096384
-	.long	1072628527
-	.long	3161606138
-	.long	3190532995
-	.long	2147483648
-	.long	1072624528
-	.long	3165265478
-	.long	3193158459
-	.long	1610612736
-	.long	1072620534
-	.long	1600940077
-	.long	3193226777
-	.long	2147483648
-	.long	1072616545
-	.long	1363272552
-	.long	3192614278
-	.long	3758096384
-	.long	1072612561
-	.long	3966209910
-	.long	3191249654
-	.long	2147483648
-	.long	1072608583
-	.long	1093672789
-	.long	3190637330
-	.long	1610612736
-	.long	1072604610
-	.long	1735239357
-	.long	3192753616
-	.long	1610612736
-	.long	1072600642
-	.long	1470665156
-	.long	1045559697
-	.long	2684354560
-	.long	1072596679
-	.long	3840624926
-	.long	1045928953
-	.long	536870912
-	.long	1072592722
-	.long	4259072556
-	.long	3191035622
-	.long	3221225472
-	.long	1072588769
-	.long	3613088753
-	.long	3192165681
-	.long	2147483648
-	.long	1072584822
-	.long	3175234446
-	.long	1039486948
-	.long	1610612736
-	.long	1072580880
-	.long	856576441
-	.long	1045702812
-	.long	2147483648
-	.long	1072576943
-	.long	2253498719
-	.long	3193285334
-	.long	2684354560
-	.long	1072573011
-	.long	1587070728
-	.long	3190801577
-	.long	3758096384
-	.long	1072569084
-	.long	159986317
-	.long	1042519436
-	.long	1073741824
-	.long	1072565163
-	.long	3999541949
-	.long	3192020440
-	.long	2684354560
-	.long	1072561246
-	.long	3281310262
-	.long	1045586786
-	.long	536870912
-	.long	1072557335
-	.long	3775179406
-	.long	1045226055
-	.long	3221225472
-	.long	1072553428
-	.long	643472356
-	.long	3193681786
-	.long	1073741824
-	.long	1072549527
-	.long	248169775
-	.long	1045068977
-	.long	3758096384
-	.long	1072545630
-	.long	307016632
-	.long	1042640932
-	.long	2147483648
-	.long	1072541739
-	.long	3872718526
-	.long	3189781486
-	.long	536870912
-	.long	1072537853
-	.long	969711630
-	.long	3191724732
-	.long	3221225472
-	.long	1072533971
-	.long	4018820394
-	.long	3193189264
-	.long	1073741824
-	.long	1072530095
-	.long	3102233092
-	.long	1045510224
-	.long	3758096384
-	.long	1072526223
-	.long	1029307912
-	.long	3193812776
-	.long	1073741824
-	.long	1072522357
-	.long	984083153
-	.long	1045987403
-	.long	3221225472
-	.long	1072518495
-	.long	4171455401
-	.long	3193084080
-	.long	0
-	.long	1072514639
-	.long	2592660757
-	.long	1046121691
-	.long	1073741824
-	.long	1072510787
-	.long	2964365712
-	.long	1046054453
-	.long	2147483648
-	.long	1072506940
-	.long	3792777877
-	.long	3193704729
-	.long	2147483648
-	.long	1072503098
-	.long	2948536104
-	.long	3192467100
-	.long	1610612736
-	.long	1072499261
-	.long	3836005619
-	.long	1041873166
-	.long	536870912
-	.long	1072495429
-	.long	3124543160
-	.long	1044409168
-	.long	3221225472
-	.long	1072491601
-	.long	286227933
-	.long	1041065990
-	.long	1073741824
-	.long	1072487779
-	.long	2111296776
-	.long	3193604419
-	.long	2147483648
-	.long	1072483961
-	.long	2606822001
-	.long	3192940394
-	.long	2147483648
-	.long	1072480148
-	.long	194696800
-	.long	1046026063
-	.long	1610612736
-	.long	1072476340
-	.long	8535452
-	.long	1046200178
-	.long	536870912
-	.long	1072472537
-	.long	950463625
-	.long	3192731897
-	.long	2147483648
-	.long	1072468738
-	.long	973831566
-	.long	1045683197
-	.long	3221225472
-	.long	1072464944
-	.long	3330435892
-	.long	3190277577
-	.long	3221225472
-	.long	1072461155
-	.long	208692097
-	.long	3193517651
-	.long	1610612736
-	.long	1072457371
-	.long	2113097415
-	.long	1044781749
-	.long	3758096384
-	.long	1072453591
-	.long	1088808936
-	.long	3193716142
-	.long	0
-	.long	1072449817
-	.long	1443002127
-	.long	3193250205
-	.long	3221225472
-	.long	1072446046
-	.long	3967357419
-	.long	1046109477
-	.long	1610612736
-	.long	1072442281
-	.long	3013517861
-	.long	3193159691
-	.long	2147483648
-	.long	1072438520
-	.long	2524586286
-	.long	1046121951
-	.long	1610612736
-	.long	1072434764
-	.long	1476892861
-	.long	1046434731
-	.long	0
-	.long	1072431013
-	.long	3089640950
-	.long	3192305780
-	.long	536870912
-	.long	1072427266
-	.long	3812255529
-	.long	1045730879
-	.long	0
-	.long	1072423524
-	.long	995354762
-	.long	3191528673
-	.long	1610612736
-	.long	1072419786
-	.long	3260567684
-	.long	1046273695
-	.long	2147483648
-	.long	1072416053
-	.long	2738210286
-	.long	3191471516
-	.long	536870912
-	.long	1072412325
-	.long	1931849805
-	.long	1044560405
-	.long	1610612736
-	.long	1072408601
-	.long	358896655
-	.long	1044029237
-	.long	1073741824
-	.long	1072404882
-	.long	2214589842
-	.long	3193202126
-	.long	2684354560
-	.long	1072401167
-	.long	3118097363
-	.long	3192592906
-	.long	2147483648
-	.long	1072397457
-	.long	1835998884
-	.long	1045788247
-	.long	0
-	.long	1072393752
-	.long	1585488319
-	.long	1045289910
-	.long	0
-	.long	1072390051
-	.long	480160949
-	.long	1046030455
-	.long	2684354560
-	.long	1072386354
-	.long	1832959667
-	.long	3193013644
-	.long	2684354560
-	.long	1072382662
-	.long	3611346555
-	.long	1044544210
-	.long	1073741824
-	.long	1072378975
-	.long	2749418734
-	.long	3193712580
-	.long	1073741824
-	.long	1072375292
-	.long	2390043472
-	.long	3191710658
-	.long	3221225472
-	.long	1072371613
-	.long	2828199902
-	.long	1042265217
-	.long	3221225472
-	.long	1072367939
-	.long	569209321
-	.long	3191230982
-	.long	536870912
-	.long	1072364270
-	.long	236159139
-	.long	1046240123
-	.long	536870912
-	.long	1072360605
-	.long	1010656270
-	.long	3193813968
-	.long	1610612736
-	.long	1072356944
-	.long	2409080597
-	.long	1044025029
-	.long	536870912
-	.long	1072353288
-	.long	598419513
-	.long	1043327370
-	.long	1073741824
-	.long	1072349636
-	.long	4105950479
-	.long	1045747958
-	.long	3758096384
-	.long	1072345988
-	.long	343243853
-	.long	3192420172
-	.long	3221225472
-	.long	1072342345
-	.long	2088439530
-	.long	1046172091
-	.long	536870912
-	.long	1072338707
-	.long	4117721107
-	.long	1043882496
-	.long	3758096384
-	.long	1072335072
-	.long	3192032958
-	.long	3192998645
-	.long	3758096384
-	.long	1072331442
-	.long	2366522518
-	.long	1045401957
-	.long	1610612736
-	.long	1072327817
-	.long	3685533141
-	.long	3193701947
-	.long	536870912
-	.long	1072324196
-	.long	1058658672
-	.long	3193572492
-	.long	536870912
-	.long	1072320579
-	.long	166346347
-	.long	1045456348
-	.long	2147483648
-	.long	1072316966
-	.long	2027889772
-	.long	1046349302
-	.long	1073741824
-	.long	1072313358
-	.long	1079497888
-	.long	1044585259
-	.long	1073741824
-	.long	1072309754
-	.long	2189851573
-	.long	1045132990
-	.long	2684354560
-	.long	1072306154
-	.long	2486629386
-	.long	3193613625
-	.long	536870912
-	.long	1072302559
-	.long	1263686579
-	.long	1044789259
-	.long	0
-	.long	1072298968
-	.long	2412061798
-	.long	3191369627
-	.long	536870912
-	.long	1072295381
-	.long	584315716
-	.long	3193144135
-	.long	1610612736
-	.long	1072291798
-	.long	449000738
-	.long	1046330451
-	.long	0
-	.long	1072288220
-	.long	3938320157
-	.long	1044446220
-	.long	3758096384
-	.long	1072284645
-	.long	2949844595
-	.long	3193462371
-	.long	3758096384
-	.long	1072281075
-	.long	2771329642
-	.long	3192121593
-	.long	536870912
-	.long	1072277510
-	.long	3971508621
-	.long	3193002806
-	.long	2147483648
-	.long	1072273948
-	.long	4071942301
-	.long	1044952619
-	.long	536870912
-	.long	1072270391
-	.long	2090502395
-	.long	1044660556
-	.long	0
-	.long	1072266838
-	.long	3657520961
-	.long	3193770938
-	.long	3758096384
-	.long	1072263288
-	.long	1608175110
-	.long	1045543239
-	.long	0
-	.long	1072259744
-	.long	2506924180
-	.long	1045530501
-	.long	1073741824
-	.long	1072256203
-	.long	18238493
-	.long	1046305623
-	.long	3221225472
-	.long	1072252666
-	.long	3862640487
-	.long	3192882407
-	.long	1073741824
-	.long	1072249134
-	.long	3850158761
-	.long	1043656099
-	.long	3758096384
-	.long	1072245605
-	.long	2356524356
-	.long	1045915296
-	.long	3221225472
-	.long	1072242081
-	.long	936497287
-	.long	3193842353
-	.long	2147483648
-	.long	1072238561
-	.long	2840845344
-	.long	1046454771
-	.long	2147483648
-	.long	1072235045
-	.long	3688100713
-	.long	1044895451
-	.long	2684354560
-	.long	1072231533
-	.long	479979913
-	.long	3193842442
-	.long	2684354560
-	.long	1072228025
-	.long	1016321898
-	.long	1046251032
-	.long	3758096384
-	.long	1072224521
-	.long	562232474
-	.long	3191974558
-	.long	536870912
-	.long	1072221022
-	.long	3870512029
-	.long	3193113881
-	.long	1610612736
-	.long	1072217526
-	.long	1239780547
-	.long	3191583604
-	.long	2684354560
-	.long	1072214034
-	.long	2815421327
-	.long	1045873682
-	.long	0
-	.long	1072210547
-	.long	2371009561
-	.long	1041508792
-	.long	1610612736
-	.long	1072207063
-	.long	1304636524
-	.long	3192414284
-	.long	3221225472
-	.long	1072203583
-	.long	210144854
-	.long	3193327333
-	.long	0
-	.long	1072200108
-	.long	1454303272
-	.long	1046360024
-	.long	1610612736
-	.long	1072196636
-	.long	2095757548
-	.long	1044984677
-	.long	3221225472
-	.long	1072193168
-	.long	2027215580
-	.long	3192880933
-	.long	0
-	.long	1072189705
-	.long	214794880
-	.long	1043457954
-	.long	1073741824
-	.long	1072186245
-	.long	884624917
-	.long	1043497079
-	.long	2147483648
-	.long	1072182789
-	.long	2792396634
-	.long	3193171685
-	.long	2684354560
-	.long	1072179337
-	.long	4128995250
-	.long	3192103434
-	.long	2684354560
-	.long	1072175889
-	.long	333866043
-	.long	1046372325
-	.long	3221225472
-	.long	1072172445
-	.long	2194445544
-	.long	3193958905
-	.long	2684354560
-	.long	1072169005
-	.long	2316082269
-	.long	3192041703
-	.long	1610612736
-	.long	1072165569
-	.long	581005057
-	.long	1046322848
-	.long	536870912
-	.long	1072162137
-	.long	3280786513
-	.long	1045457251
-	.long	3221225472
-	.long	1072158708
-	.long	2567093361
-	.long	1044710359
-	.long	1073741824
-	.long	1072155284
-	.long	3740443584
-	.long	1044224237
-	.long	2684354560
-	.long	1072151863
-	.long	3981028272
-	.long	1042596351
-	.long	3758096384
-	.long	1072148446
-	.long	3820011120
-	.long	3191915623
-	.long	0
-	.long	1072145034
-	.long	2946439484
-	.long	3193831276
-	.long	3758096384
-	.long	1072141624
-	.long	3075274422
-	.long	3190132432
-	.long	2684354560
-	.long	1072138219
-	.long	496052167
-	.long	1043619760
-	.long	1073741824
-	.long	1072134818
-	.long	271106589
-	.long	3192265149
-	.long	2684354560
-	.long	1072131420
-	.long	2091955684
-	.long	1044443554
-	.long	3758096384
-	.long	1072128026
-	.long	723240109
-	.long	3191007419
-	.long	3758096384
-	.long	1072124636
-	.long	1748629070
-	.long	1044510075
-	.long	3221225472
-	.long	1072121250
-	.long	3289522046
-	.long	3193095178
-	.long	1610612736
-	.long	1072117868
-	.long	3599052146
-	.long	3193720427
-	.long	3221225472
-	.long	1072114489
-	.long	2446758135
-	.long	3193436303
-	.long	3758096384
-	.long	1072111114
-	.long	1652171097
-	.long	3192137173
-	.long	3221225472
-	.long	1072107743
-	.long	1353007155
-	.long	1044523902
-	.long	1610612736
-	.long	1072104376
-	.long	990601105
-	.long	1046296663
-	.long	3758096384
-	.long	1072101012
-	.long	2228627618
-	.long	3193041040
-	.long	0
-	.long	1072097653
-	.long	812484756
-	.long	3191950723
-	.long	3758096384
-	.long	1072094296
-	.long	817833130
-	.long	3192279242
-	.long	2147483648
-	.long	1072090944
-	.long	3563228521
-	.long	3193810951
-	.long	3221225472
-	.long	1072087595
-	.long	2729108859
-	.long	3190936185
-	.long	3221225472
-	.long	1072084250
-	.long	2249121662
-	.long	3190639690
-	.long	2147483648
-	.long	1072080909
-	.long	4082471745
-	.long	3193929368
-	.long	3758096384
-	.long	1072077571
-	.long	2827323806
-	.long	3193708561
-	.long	3758096384
-	.long	1072074237
-	.long	735866167
-	.long	1042434690
-	.long	2684354560
-	.long	1072070907
-	.long	3240808889
-	.long	3191918422
-	.long	0
-	.long	1072067581
-	.long	466482777
-	.long	3186962221
-	.long	0
-	.long	1072064258
-	.long	1576076296
-	.long	1045849056
-	.long	3221225472
-	.long	1072060938
-	.long	2751923560
-	.long	3191910703
-	.long	0
-	.long	1072057623
-	.long	1908755527
-	.long	1046437515
-	.long	0
-	.long	1072054311
-	.long	3175841411
-	.long	1044572886
-	.long	2684354560
-	.long	1072051002
-	.long	1633258450
-	.long	3192670420
-	.long	3221225472
-	.long	1072047697
-	.long	1867746657
-	.long	1045726209
-	.long	2684354560
-	.long	1072044396
-	.long	338968864
-	.long	3193084662
-	.long	0
-	.long	1072041099
-	.long	1501742471
-	.long	3191742031
-	.long	0
-	.long	1072037805
-	.long	4266775786
-	.long	3192686970
-	.long	2147483648
-	.long	1072034514
-	.long	4249283553
-	.long	1045769728
-	.long	2684354560
-	.long	1072031227
-	.long	2758366873
-	.long	1046402161
-	.long	1610612736
-	.long	1072027944
-	.long	2161186990
-	.long	1044736865
-	.long	2684354560
-	.long	1072024664
-	.long	810300171
-	.long	1045748777
-	.long	2147483648
-	.long	1072021388
-	.long	183688927
-	.long	3191515581
-	.long	3758096384
-	.long	1072018115
-	.long	368874072
-	.long	3192363575
-	.long	3221225472
-	.long	1072014846
-	.long	2459092970
-	.long	1041794640
-	.long	536870912
-	.long	1072011581
-	.long	867488640
-	.long	1046310291
-	.long	536870912
-	.long	1072008319
-	.long	50140871
-	.long	1043327329
-	.long	2684354560
-	.long	1072005060
-	.long	1241902518
-	.long	3192739252
-	.long	2684354560
-	.long	1072001805
-	.long	1027881659
-	.long	3193858388
-	.long	0
-	.long	1071998554
-	.long	38457322
-	.long	1045489179
-	.long	0
-	.long	1071995306
-	.long	3432963337
-	.long	3190969347
-	.long	1610612736
-	.long	1071992061
-	.long	534931792
-	.long	1046302734
-	.long	1610612736
-	.long	1071988820
-	.long	1817895268
-	.long	3192551860
-	.long	3221225472
-	.long	1071985582
-	.long	357237383
-	.long	3191870833
-	.long	2684354560
-	.long	1071982348
-	.long	108262401
-	.long	3193365867
-	.long	3758096384
-	.long	1071979117
-	.long	1964729244
-	.long	1042502249
-	.long	2684354560
-	.long	1071975890
-	.long	2088446957
-	.long	1038010503
-	.long	3221225472
-	.long	1071972666
-	.long	2947239447
-	.long	1046377845
-	.long	1610612736
-	.long	1071969446
-	.long	774932072
-	.long	1046064854
-	.long	2147483648
-	.long	1071966229
-	.long	4080937590
-	.long	3193041284
-	.long	3758096384
-	.long	1071963015
-	.long	2208251454
-	.long	1045945089
-	.long	3221225472
-	.long	1071959805
-	.long	2850924475
-	.long	1045650959
-	.long	0
-	.long	1071956599
-	.long	714040997
-	.long	1046275153
-	.long	3221225472
-	.long	1071953395
-	.long	85533782
-	.long	3192816920
-	.long	3221225472
-	.long	1071950195
-	.long	1252511005
-	.long	1044805706
-	.long	1073741824
-	.long	1071946999
-	.long	2384659038
-	.long	3193391602
-	.long	0
-	.long	1071943806
-	.long	416481813
-	.long	1043730233
-	.long	536870912
-	.long	1071940616
-	.long	1675424499
-	.long	1046348030
-	.long	3221225472
-	.long	1071937429
-	.long	1175989513
-	.long	3193009113
-	.long	2684354560
-	.long	1071934246
-	.long	2400084650
-	.long	3192451713
-	.long	3758096384
-	.long	1071931066
-	.long	1467335692
-	.long	3193350868
-	.long	1610612736
-	.long	1071927890
-	.long	266493801
-	.long	1044954481
-	.long	1073741824
-	.long	1071924717
-	.long	3919093445
-	.long	1046023575
-	.long	2147483648
-	.long	1071921547
-	.long	3017408483
-	.long	1044880828
-	.long	536870912
-	.long	1071918381
-	.long	948849966
-	.long	3193892224
-	.long	3758096384
-	.long	1071915217
-	.long	1870232600
-	.long	1045777228
-	.long	536870912
-	.long	1071912058
-	.long	822381492
-	.long	3193639186
-	.long	2147483648
-	.long	1071908901
-	.long	788243705
-	.long	1044966343
-	.long	1073741824
-	.long	1071905748
-	.long	1344278809
-	.long	1044428545
-	.long	1073741824
-	.long	1071902598
-	.long	172864300
-	.long	1045765608
-	.long	2684354560
-	.long	1071899451
-	.long	211555467
-	.long	3192963574
-	.long	536870912
-	.long	1071896308
-	.long	3373438023
-	.long	1045643168
-	.long	0
-	.long	1071893168
-	.long	2867180960
-	.long	3189945998
-	.long	536870912
-	.long	1071890031
-	.long	36724362
-	.long	3193240584
-	.long	1610612736
-	.long	1071886897
-	.long	2140176984
-	.long	1045945349
-	.long	0
-	.long	1071883767
-	.long	436842360
-	.long	1040712587
-	.long	3758096384
-	.long	1071880639
-	.long	1225147329
-	.long	3193814594
-	.long	3758096384
-	.long	1071877515
-	.long	1586157348
-	.long	3191614322
-	.long	536870912
-	.long	1071874395
-	.long	3329332918
-	.long	1041699791
-	.long	2684354560
-	.long	1071871277
-	.long	1635968041
-	.long	3191783756
-	.long	1073741824
-	.long	1071868163
-	.long	2876158382
-	.long	1046097093
-	.long	1073741824
-	.long	1071865052
-	.long	4267556964
-	.long	3193723000
-	.long	1073741824
-	.long	1071861944
-	.long	195475940
-	.long	1045520795
-	.long	2147483648
-	.long	1071858839
-	.long	2239193514
-	.long	1046478675
-	.long	0
-	.long	1071855738
-	.long	4168275596
-	.long	1044926285
-	.long	2684354560
-	.long	1071852639
-	.long	142514114
-	.long	1045595182
-	.long	2147483648
-	.long	1071849544
-	.long	1943457984
-	.long	3192930015
-	.long	2147483648
-	.long	1071846452
-	.long	202659489
-	.long	3193926317
-	.long	2684354560
-	.long	1071843363
-	.long	2208408789
-	.long	3193857484
-	.long	3758096384
-	.long	1071840277
-	.long	2237297552
-	.long	3192939576
-	.long	1073741824
-	.long	1071837195
-	.long	2726920839
-	.long	1044193954
-	.long	3758096384
-	.long	1071834115
-	.long	2337732207
-	.long	3193611773
-	.long	2147483648
-	.long	1071831039
-	.long	1390088602
-	.long	1044000317
-	.long	1610612736
-	.long	1071827966
-	.long	3806188736
-	.long	3193463913
-	.long	1073741824
-	.long	1071824896
-	.long	1795276560
-	.long	1043671965
-	.long	1073741824
-	.long	1071821829
-	.long	2960792799
-	.long	1046240474
-	.long	2147483648
-	.long	1071818765
-	.long	3350591592
-	.long	3193333939
-	.long	3221225472
-	.long	1071815704
-	.long	408870754
-	.long	3193322854
-	.long	0
-	.long	1071812647
-	.long	4146717132
-	.long	1046063520
-	.long	2147483648
-	.long	1071809592
-	.long	1681114919
-	.long	3192114313
-	.long	0
-	.long	1071806541
-	.long	1098393137
-	.long	3190846732
-	.long	2684354560
-	.long	1071803492
-	.long	2437484983
-	.long	3193448718
-	.long	1073741824
-	.long	1071800447
-	.long	1036809185
-	.long	3192023501
-	.long	0
-	.long	1071797405
-	.long	659668848
-	.long	3193596312
-	.long	3221225472
-	.long	1071794365
-	.long	1112062459
-	.long	3192773376
-	.long	2147483648
-	.long	1071791329
-	.long	4082956335
-	.long	1045830513
-	.long	1610612736
-	.long	1071788296
-	.long	2387089965
-	.long	1045532601
-	.long	1610612736
-	.long	1071785266
-	.long	1522101980
-	.long	3193941957
-	.long	1073741824
-	.long	1071782239
-	.long	2157197585
-	.long	3188193305
-	.long	1073741824
-	.long	1071779215
-	.long	946810220
-	.long	3193223819
-	.long	1073741824
-	.long	1071776194
-	.long	4069942444
-	.long	3193878549
-	.long	536870912
-	.long	1071773176
-	.long	1693463440
-	.long	1046360588
-	.long	536870912
-	.long	1071770161
-	.long	1954543254
-	.long	1046409381
-	.long	1073741824
-	.long	1071767149
-	.long	1050471249
-	.long	3193933095
-	.long	536870912
-	.long	1071764140
-	.long	1256240478
-	.long	1046456865
-	.long	536870912
-	.long	1071761134
-	.long	676764254
-	.long	1046055503
-	.long	536870912
-	.long	1071758131
-	.long	1421032967
-	.long	1044779786
-	.long	536870912
-	.long	1071755131
-	.long	38735992
-	.long	3192766355
-	.long	0
-	.long	1071752134
-	.long	2960669690
-	.long	1044484680
-	.long	3758096384
-	.long	1071749139
-	.long	788707382
-	.long	1045299895
-	.long	3221225472
-	.long	1071746148
-	.long	685689300
-	.long	1040778831
-	.long	2147483648
-	.long	1071743160
-	.long	1170994182
-	.long	1046159174
-	.long	1073741824
-	.long	1071740175
-	.long	64591436
-	.long	1046153849
-	.long	0
-	.long	1071737193
-	.long	2338031659
-	.long	3189997702
-	.long	2684354560
-	.long	1071734213
-	.long	1941624568
-	.long	3186752676
-	.long	536870912
-	.long	1071731237
-	.long	1401255580
-	.long	1046383990
-	.long	2684354560
-	.long	1071728263
-	.long	376888427
-	.long	1045896456
-	.long	536870912
-	.long	1071725293
-	.long	2831424639
-	.long	3193539109
-	.long	1610612736
-	.long	1071722325
-	.long	3303123696
-	.long	1044599415
-	.long	2684354560
-	.long	1071719360
-	.long	1077295329
-	.long	3189877372
-	.long	3221225472
-	.long	1071716398
-	.long	1434061099
-	.long	3184529771
-	.long	3221225472
-	.long	1071713439
-	.long	2104991590
-	.long	1045062074
-	.long	3221225472
-	.long	1071710483
-	.long	722060869
-	.long	3193788526
-	.long	536870912
-	.long	1071704580
-	.long	3928796486
-	.long	1046129020
-	.long	536870912
-	.long	1071698688
-	.long	588844628
-	.long	1045492135
-	.long	2684354560
-	.long	1071692807
-	.long	326739366
-	.long	3193004445
-	.long	1610612736
-	.long	1071686938
-	.long	2456436042
-	.long	1046278169
-	.long	2684354560
-	.long	1071681080
-	.long	2831303512
-	.long	1043670046
-	.long	536870912
-	.long	1071675234
-	.long	607223418
-	.long	1045507322
-	.long	0
-	.long	1071669399
-	.long	4254921332
-	.long	3193290483
-	.long	0
-	.long	1071663575
-	.long	914994333
-	.long	3191263853
-	.long	1073741824
-	.long	1071657762
-	.long	4147050180
-	.long	3193228552
-	.long	2684354560
-	.long	1071651960
-	.long	594554157
-	.long	3193503935
-	.long	0
-	.long	1071646170
-	.long	1062846796
-	.long	1045944331
-	.long	1073741824
-	.long	1071636109
-	.long	2909238893
-	.long	3193436884
-	.long	1073741824
-	.long	1071624572
-	.long	1682918119
-	.long	1042211899
-	.long	1073741824
-	.long	1071613057
-	.long	2419209426
-	.long	1045437062
-	.long	1073741824
-	.long	1071601564
-	.long	2951341321
-	.long	3190193214
-	.long	0
-	.long	1071590093
-	.long	3084900875
-	.long	3192394907
-	.long	1073741824
-	.long	1071578643
-	.long	999567454
-	.long	1046433447
-	.long	2147483648
-	.long	1071567215
-	.long	1570101857
-	.long	3193291160
-	.long	0
-	.long	1071555809
-	.long	1080647881
-	.long	3185154585
-	.long	0
-	.long	1071544424
-	.long	3526309177
-	.long	1044843640
-	.long	2147483648
-	.long	1071533060
-	.long	2213463349
-	.long	3191738930
-	.long	1073741824
-	.long	1071521718
-	.long	1039925195
-	.long	3192618353
-	.long	1073741824
-	.long	1071510397
-	.long	2115757280
-	.long	3193671567
-	.long	1073741824
-	.long	1071499097
-	.long	1188751495
-	.long	3191145560
-	.long	2147483648
-	.long	1071487818
-	.long	3983461449
-	.long	3193897029
-	.long	2147483648
-	.long	1071476560
-	.long	782141500
-	.long	1042879962
-	.long	2147483648
-	.long	1071465323
-	.long	4038904626
-	.long	1045063881
-	.long	2147483648
-	.long	1071454107
-	.long	2613036921
-	.long	3193217642
-	.long	0
-	.long	1071442912
-	.long	2095723435
-	.long	1044629175
-	.long	1073741824
-	.long	1071431737
-	.long	3879795974
-	.long	1045767874
-	.long	1073741824
-	.long	1071420583
-	.long	2662198042
-	.long	3191434637
-	.long	3221225472
-	.long	1071409449
-	.long	4037605722
-	.long	3193703090
-	.long	2147483648
-	.long	1071398336
-	.long	1860331835
-	.long	1040814822
-	.long	3221225472
-	.long	1071387243
-	.long	1522972033
-	.long	3190305974
-	.long	1073741824
-	.long	1071376171
-	.long	2361534207
-	.long	1043699366
-	.long	0
-	.long	1071365119
-	.long	4180309179
-	.long	1044142099
-	.long	0
-	.long	1071354087
-	.long	1201038528
-	.long	3192968772
-	.long	0
-	.long	1071343075
-	.long	1342478171
-	.long	3193251215
-	.long	0
-	.long	1071332083
-	.long	3836883348
-	.long	3193472007
-	.long	3221225472
-	.long	1071321110
-	.long	3864874250
-	.long	1045593126
-	.long	2147483648
-	.long	1071310158
-	.long	2169494998
-	.long	1046045346
-	.long	1073741824
-	.long	1071299226
-	.long	3785165075
-	.long	3193319246
-	.long	2147483648
-	.long	1071288313
-	.long	1137692678
-	.long	3192716779
-	.long	1073741824
-	.long	1071277420
-	.long	1752107598
-	.long	1046366120
-	.long	3221225472
-	.long	1071266546
-	.long	1912656912
-	.long	1046352281
-	.long	3221225472
-	.long	1071255692
-	.long	2882676334
-	.long	1046406353
-	.long	1073741824
-	.long	1071244858
-	.long	963612460
-	.long	1045282811
-	.long	0
-	.long	1071234043
-	.long	3811255773
-	.long	1046231636
-	.long	1073741824
-	.long	1071223247
-	.long	1126055989
-	.long	3192224037
-	.long	2147483648
-	.long	1071212470
-	.long	2079145427
-	.long	1044432413
-	.long	0
-	.long	1071201713
-	.long	3611595621
-	.long	1043358745
-	.long	2147483648
-	.long	1071190974
-	.long	390522769
-	.long	1045888252
-	.long	1073741824
-	.long	1071180255
-	.long	4087939723
-	.long	3192930745
-	.long	3221225472
-	.long	1071169554
-	.long	1451494480
-	.long	3190219274
-	.long	1073741824
-	.long	1071158873
-	.long	427176194
-	.long	3193042022
-	.long	2147483648
-	.long	1071148210
-	.long	1882381948
-	.long	3192727946
-	.long	2147483648
-	.long	1071137566
-	.long	3736313771
-	.long	3192087019
-	.long	1073741824
-	.long	1071126941
-	.long	1560398816
-	.long	3193185715
-	.long	2147483648
-	.long	1071116334
-	.long	1021942441
-	.long	1041526696
-	.long	2147483648
-	.long	1071105746
-	.long	3517080249
-	.long	3193576041
-	.long	3221225472
-	.long	1071095176
-	.long	2248589878
-	.long	1044527624
-	.long	2147483648
-	.long	1071084625
-	.long	2412896695
-	.long	1046112867
-	.long	3221225472
-	.long	1071074092
-	.long	3834725738
-	.long	1044562378
-	.long	1073741824
-	.long	1071063578
-	.long	1150920407
-	.long	1043768986
-	.long	0
-	.long	1071053082
-	.long	1379393428
-	.long	3188690690
-	.long	0
-	.long	1071042604
-	.long	3058183278
-	.long	3193617655
-	.long	0
-	.long	1071032144
-	.long	421133665
-	.long	3193417186
-	.long	0
-	.long	1071021702
-	.long	2860161357
-	.long	3191816125
-	.long	0
-	.long	1071011278
-	.long	1742405964
-	.long	1043580240
-	.long	0
-	.long	1071000872
-	.long	2821215927
-	.long	3188984273
-	.long	3221225472
-	.long	1070990483
-	.long	510275597
-	.long	1045813401
-	.long	2147483648
-	.long	1070980113
-	.long	304266588
-	.long	3191193536
-	.long	3221225472
-	.long	1070969760
-	.long	1854784211
-	.long	1046302073
-	.long	0
-	.long	1070959426
-	.long	3773082854
-	.long	3193008899
-	.long	2147483648
-	.long	1070949108
-	.long	3003572392
-	.long	1046404879
-	.long	3221225472
-	.long	1070938808
-	.long	1702149204
-	.long	1046407257
-	.long	2147483648
-	.long	1070928526
-	.long	3935314439
-	.long	1046438280
-	.long	3221225472
-	.long	1070918261
-	.long	2677087609
-	.long	1045501749
-	.long	2147483648
-	.long	1070908014
-	.long	4190598039
-	.long	3193640515
-	.long	1073741824
-	.long	1070897784
-	.long	368874072
-	.long	1044879927
-	.long	2147483648
-	.long	1070887571
-	.long	3584052697
-	.long	3192024662
-	.long	3221225472
-	.long	1070877375
-	.long	3762307829
-	.long	1045886918
-	.long	1073741824
-	.long	1070867197
-	.long	495710920
-	.long	1046317072
-	.long	0
-	.long	1070857036
-	.long	2292768238
-	.long	3190887508
-	.long	3221225472
-	.long	1070846891
-	.long	1044078151
-	.long	3193772914
-	.long	1073741824
-	.long	1070836764
-	.long	3266010457
-	.long	1043443755
-	.long	3221225472
-	.long	1070826653
-	.long	3571665822
-	.long	1045547823
-	.long	1073741824
-	.long	1070816560
-	.long	393348347
-	.long	3190525143
-	.long	2147483648
-	.long	1070806483
-	.long	4241722498
-	.long	3192084193
-	.long	2147483648
-	.long	1070796423
-	.long	1693797068
-	.long	3192807972
-	.long	0
-	.long	1070786380
-	.long	2860086745
-	.long	1046331646
-	.long	2147483648
-	.long	1070776353
-	.long	1366141759
-	.long	3192979363
-	.long	1073741824
-	.long	1070766343
-	.long	737899283
-	.long	1045853346
-	.long	3221225472
-	.long	1070756349
-	.long	88734873
-	.long	1043881257
-	.long	3221225472
-	.long	1070746372
-	.long	1438003315
-	.long	3192917101
-	.long	0
-	.long	1070736412
-	.long	1066505530
-	.long	1043896695
-	.long	3221225472
-	.long	1070726467
-	.long	2706653041
-	.long	3191113643
-	.long	3221225472
-	.long	1070716539
-	.long	1321764476
-	.long	1039573724
-	.long	0
-	.long	1070706628
-	.long	1126753211
-	.long	1044502976
-	.long	2147483648
-	.long	1070696732
-	.long	773642884
-	.long	1044110727
-	.long	1073741824
-	.long	1070686853
-	.long	1263743406
-	.long	3193115278
-	.long	0
-	.long	1070676990
-	.long	3115237732
-	.long	3193089176
-	.long	3221225472
-	.long	1070667142
-	.long	3642626838
-	.long	3191146032
-	.long	2147483648
-	.long	1070657311
-	.long	2091696428
-	.long	1044337177
-	.long	1073741824
-	.long	1070647496
-	.long	3168958391
-	.long	1044197568
-	.long	0
-	.long	1070637697
-	.long	711148669
-	.long	3193181047
-	.long	2147483648
-	.long	1070627913
-	.long	4207182773
-	.long	3193402092
-	.long	3221225472
-	.long	1070618145
-	.long	918070640
-	.long	3192902845
-	.long	3221225472
-	.long	1070608393
-	.long	3135571447
-	.long	3192193928
-	.long	2147483648
-	.long	1070598657
-	.long	1043705517
-	.long	3193188604
-	.long	2147483648
-	.long	1070581777
-	.long	1886680492
-	.long	1043890286
-	.long	2147483648
-	.long	1070562367
-	.long	3373799420
-	.long	3191917802
-	.long	2147483648
-	.long	1070542988
-	.long	2919618025
-	.long	3192461752
-	.long	2147483648
-	.long	1070523640
-	.long	2926365158
-	.long	3193113492
-	.long	0
-	.long	1070504323
-	.long	519978638
-	.long	1045918846
-	.long	0
-	.long	1070485037
-	.long	3665353151
-	.long	3193546248
-	.long	0
-	.long	1070465781
-	.long	2327718958
-	.long	1045050797
-	.long	0
-	.long	1070446556
-	.long	345326861
-	.long	3188224716
-	.long	2147483648
-	.long	1070427361
-	.long	2263747488
-	.long	3192871328
-	.long	0
-	.long	1070408197
-	.long	3894192264
-	.long	1045693123
-	.long	0
-	.long	1070389063
-	.long	994321593
-	.long	1046347203
-	.long	2147483648
-	.long	1070369959
-	.long	3540366700
-	.long	1042296230
-	.long	0
-	.long	1070350886
-	.long	966420752
-	.long	3192400412
-	.long	2147483648
-	.long	1070331842
-	.long	1954511160
-	.long	3193467762
-	.long	2147483648
-	.long	1070312828
-	.long	1875003040
-	.long	1045485629
-	.long	0
-	.long	1070293845
-	.long	4003372005
-	.long	3193714109
-	.long	2147483648
-	.long	1070274890
-	.long	2216083644
-	.long	1045720399
-	.long	0
-	.long	1070255966
-	.long	1240985743
-	.long	1045879414
-	.long	0
-	.long	1070237071
-	.long	1573064162
-	.long	1046427916
-	.long	0
-	.long	1070218206
-	.long	2500166582
-	.long	3193848169
-	.long	2147483648
-	.long	1070199369
-	.long	862131539
-	.long	1045606065
-	.long	0
-	.long	1070180563
-	.long	3733427622
-	.long	3193545988
-	.long	0
-	.long	1070161785
-	.long	124515358
-	.long	1045504766
-	.long	2147483648
-	.long	1070143036
-	.long	689228007
-	.long	1044238436
-	.long	0
-	.long	1070124317
-	.long	976284835
-	.long	3189879978
-	.long	2147483648
-	.long	1070105626
-	.long	2997446224
-	.long	3193394244
-	.long	2147483648
-	.long	1070086964
-	.long	594985163
-	.long	3190453447
-	.long	2147483648
-	.long	1070068331
-	.long	3634411091
-	.long	3193012662
-	.long	0
-	.long	1070049727
-	.long	841316482
-	.long	3192551604
-	.long	0
-	.long	1070031151
-	.long	518949849
-	.long	3189505693
-	.long	2147483648
-	.long	1070012603
-	.long	207633604
-	.long	1043791305
-	.long	2147483648
-	.long	1069994084
-	.long	925415631
-	.long	3189658670
-	.long	2147483648
-	.long	1069975593
-	.long	3348775015
-	.long	1046231055
-	.long	0
-	.long	1069957131
-	.long	4137593961
-	.long	1045760644
-	.long	2147483648
-	.long	1069938696
-	.long	3081207972
-	.long	1046319652
-	.long	2147483648
-	.long	1069920290
-	.long	2912811806
-	.long	3193250863
-	.long	0
-	.long	1069901912
-	.long	1704663230
-	.long	3192651171
-	.long	2147483648
-	.long	1069883561
-	.long	1726887473
-	.long	3193427817
-	.long	2147483648
-	.long	1069865238
-	.long	516302873
-	.long	1042556919
-	.long	2147483648
-	.long	1069846943
-	.long	3737277289
-	.long	3192083505
-	.long	0
-	.long	1069828676
-	.long	2829909067
-	.long	3191628520
-	.long	0
-	.long	1069810436
-	.long	3474800299
-	.long	3187384991
-	.long	2147483648
-	.long	1069792223
-	.long	2041291754
-	.long	3186735048
-	.long	2147483648
-	.long	1069774038
-	.long	3100739290
-	.long	3192991951
-	.long	2147483648
-	.long	1069755880
-	.long	2641686866
-	.long	1042449846
-	.long	0
-	.long	1069737750
-	.long	1353612457
-	.long	3192928544
-	.long	2147483648
-	.long	1069719646
-	.long	1823398190
-	.long	3193125156
-	.long	0
-	.long	1069701570
-	.long	2629108558
-	.long	3192983089
-	.long	2147483648
-	.long	1069683520
-	.long	314889080
-	.long	3193178947
-	.long	2147483648
-	.long	1069665497
-	.long	3426846470
-	.long	1046055034
-	.long	0
-	.long	1069647502
-	.long	2451521798
-	.long	3193081447
-	.long	2147483648
-	.long	1069629532
-	.long	963200030
-	.long	1046315089
-	.long	0
-	.long	1069611590
-	.long	3644976987
-	.long	1046450297
-	.long	2147483648
-	.long	1069593674
-	.long	1514045874
-	.long	3193337489
-	.long	0
-	.long	1069575785
-	.long	2640752615
-	.long	3192734715
-	.long	0
-	.long	1069557922
-	.long	177381730
-	.long	3193107348
-	.long	0
-	.long	1069532650
-	.long	546871269
-	.long	1045601847
-	.long	0
-	.long	1069497029
-	.long	2220408187
-	.long	1045964849
-	.long	0
-	.long	1069461461
-	.long	3101209784
-	.long	3192417098
-	.long	0
-	.long	1069425944
-	.long	3768825782
-	.long	1046196178
-	.long	0
-	.long	1069390480
-	.long	737308942
-	.long	1043872555
-	.long	0
-	.long	1069355068
-	.long	1944808119
-	.long	3193362317
-	.long	0
-	.long	1069319707
-	.long	852406261
-	.long	3191004250
-	.long	0
-	.long	1069284398
-	.long	3202370743
-	.long	3192549796
-	.long	0
-	.long	1069249140
-	.long	900633975
-	.long	1043862575
-	.long	0
-	.long	1069213934
-	.long	3417168564
-	.long	3193213168
-	.long	0
-	.long	1069178778
-	.long	2513309972
-	.long	1046051953
-	.long	0
-	.long	1069143674
-	.long	1836846968
-	.long	1044036653
-	.long	0
-	.long	1069108621
-	.long	675391362
-	.long	3193334972
-	.long	0
-	.long	1069073618
-	.long	1859398086
-	.long	3191668729
-	.long	0
-	.long	1069038666
-	.long	3835994043
-	.long	3193252196
-	.long	0
-	.long	1069003764
-	.long	563337246
-	.long	3192060530
-	.long	0
-	.long	1068968912
-	.long	3715154210
-	.long	1045592716
-	.long	0
-	.long	1068934111
-	.long	51415636
-	.long	3192193939
-	.long	0
-	.long	1068899359
-	.long	822049108
-	.long	1045846080
-	.long	0
-	.long	1068864658
-	.long	3739043340
-	.long	3193184949
-	.long	0
-	.long	1068830006
-	.long	2500828997
-	.long	3193115638
-	.long	0
-	.long	1068795403
-	.long	1479335089
-	.long	1045458233
-	.long	0
-	.long	1068760850
-	.long	1914098598
-	.long	1045079833
-	.long	0
-	.long	1068726346
-	.long	1470374909
-	.long	1046125471
-	.long	0
-	.long	1068691892
-	.long	2048101185
-	.long	3192960024
-	.long	0
-	.long	1068657486
-	.long	801101802
-	.long	1042523454
-	.long	0
-	.long	1068623129
-	.long	412171467
-	.long	1044799425
-	.long	0
-	.long	1068588821
-	.long	2124566049
-	.long	1040459843
-	.long	0
-	.long	1068554561
-	.long	2087558263
-	.long	1046083102
-	.long	0
-	.long	1068520350
-	.long	290389316
-	.long	1045220023
-	.long	0
-	.long	1068473430
-	.long	393737815
-	.long	1045770085
-	.long	0
-	.long	1068405202
-	.long	3273111658
-	.long	3193594336
-	.long	0
-	.long	1068337068
-	.long	3076935419
-	.long	3191993934
-	.long	0
-	.long	1068269030
-	.long	1564279721
-	.long	1040713632
-	.long	0
-	.long	1068201088
-	.long	1950103787
-	.long	3191285473
-	.long	0
-	.long	1068133240
-	.long	111301617
-	.long	1046140470
-	.long	0
-	.long	1068065488
-	.long	2740933659
-	.long	1046091898
-	.long	0
-	.long	1067997832
-	.long	1267131462
-	.long	3192947024
-	.long	0
-	.long	1067930268
-	.long	629787343
-	.long	1045599114
-	.long	0
-	.long	1067862800
-	.long	2943029746
-	.long	3191100621
-	.long	0
-	.long	1067795426
-	.long	2538631151
-	.long	3193953989
-	.long	0
-	.long	1067728144
-	.long	3881795033
-	.long	3191377363
-	.long	0
-	.long	1067660956
-	.long	2752747058
-	.long	3186250103
-	.long	0
-	.long	1067593862
-	.long	892170014
-	.long	3193330390
-	.long	0
-	.long	1067526860
-	.long	2000985783
-	.long	3192968647
-	.long	0
-	.long	1067459950
-	.long	1954077304
-	.long	1044399908
-	.long	0
-	.long	1067335900
-	.long	4120702847
-	.long	3193150730
-	.long	0
-	.long	1067202448
-	.long	353489980
-	.long	1045676744
-	.long	0
-	.long	1067069184
-	.long	2609643324
-	.long	3192108001
-	.long	0
-	.long	1066936100
-	.long	2904433317
-	.long	1044836541
-	.long	0
-	.long	1066803200
-	.long	319656790
-	.long	1044863904
-	.long	0
-	.long	1066670484
-	.long	2407987331
-	.long	3192995083
-	.long	0
-	.long	1066537948
-	.long	2437746120
-	.long	3193127733
-	.long	0
-	.long	1066405592
-	.long	762570215
-	.long	3189946997
-	.long	0
-	.long	1066145040
-	.long	3317159694
-	.long	1046060125
-	.long	0
-	.long	1065881056
-	.long	2317845886
-	.long	3191679176
-	.long	0
-	.long	1065617424
-	.long	3665195816
-	.long	1045633853
-	.long	0
-	.long	1065354160
-	.long	2008730355
-	.long	3193898211
-	.long	0
-	.long	1064829264
-	.long	3746236192
-	.long	1046121471
-	.long	0
-	.long	1064303680
-	.long	885296753
-	.long	3191852441
-	.long	0
-	.long	1063253696
-	.long	449976495
-	.long	3192682663
-	.long	0
-	.long	0
-	.long	0
-	.long	2147483648
-	.type	L_tbl,@object
-	.size	L_tbl,8208
-	.space 496, 0x00 	# pad
-	.align 16
-HIGHMASK_Y:
-	.long	0
-	.long	4294967288
-	.long	0
-	.long	4294967295
-	.type	HIGHMASK_Y,@object
-	.size	HIGHMASK_Y,16
-	.align 16
-T_exp:
-	.long	0
-	.long	1072693248
-	.long	0
-	.long	997195776
-	.long	4200250559
-	.long	1072696090
-	.long	2808127345
-	.long	3162830514
-	.long	2851812149
-	.long	1072698941
-	.long	2595802551
-	.long	1016815913
-	.long	339411585
-	.long	1072701800
-	.long	264588982
-	.long	3162685233
-	.long	1048019041
-	.long	1072704666
-	.long	1398474845
-	.long	3161559171
-	.long	772914124
-	.long	1072707540
-	.long	4004372762
-	.long	1013278737
-	.long	3899555717
-	.long	1072710421
-	.long	427280750
-	.long	3163595548
-	.long	1928746161
-	.long	1072713311
-	.long	983617676
-	.long	1015333753
-	.long	3541402996
-	.long	1072716208
-	.long	2759177317
-	.long	1015903202
-	.long	238821257
-	.long	1072719114
-	.long	1469694871
-	.long	3163933563
-	.long	702412510
-	.long	1072722027
-	.long	3803266087
-	.long	3163328991
-	.long	728934454
-	.long	1072724948
-	.long	1413842688
-	.long	1015227188
-	.long	410360776
-	.long	1072727877
-	.long	1269990655
-	.long	1013024446
-	.long	4133881824
-	.long	1072730813
-	.long	2148155345
-	.long	3163979875
-	.long	3402036099
-	.long	1072733758
-	.long	405889334
-	.long	1016154232
-	.long	2602514713
-	.long	1072736711
-	.long	2268929336
-	.long	1015402860
-	.long	1828292879
-	.long	1072739672
-	.long	1255956747
-	.long	1016636974
-	.long	1172597893
-	.long	1072742641
-	.long	114433263
-	.long	1016396169
-	.long	728909815
-	.long	1072745618
-	.long	383930225
-	.long	1016078044
-	.long	590962156
-	.long	1072748603
-	.long	3829346666
-	.long	3164324173
-	.long	852742562
-	.long	1072751596
-	.long	667253586
-	.long	1010842135
-	.long	1608493509
-	.long	1072754597
-	.long	3159622171
-	.long	3163856313
-	.long	2952712987
-	.long	1072757606
-	.long	3293494651
-	.long	3161168877
-	.long	685187902
-	.long	1072760624
-	.long	378731989
-	.long	1015891691
-	.long	3490863953
-	.long	1072763649
-	.long	960797498
-	.long	3163997456
-	.long	2875075254
-	.long	1072766683
-	.long	4144233330
-	.long	3164382292
-	.long	3228316108
-	.long	1072769725
-	.long	3010241991
-	.long	3159471380
-	.long	351405227
-	.long	1072772776
-	.long	3125337328
-	.long	3160871055
-	.long	2930322912
-	.long	1072775834
-	.long	2599499422
-	.long	3163762623
-	.long	2471440686
-	.long	1072778901
-	.long	968836267
-	.long	3163263464
-	.long	3366293073
-	.long	1072781976
-	.long	3119426314
-	.long	1015169130
-	.long	1416741826
-	.long	1072785060
-	.long	2196380210
-	.long	1012462139
-	.long	1014845819
-	.long	1072788152
-	.long	3117910646
-	.long	3162607681
-	.long	2257959872
-	.long	1072791252
-	.long	3802946148
-	.long	1014013503
-	.long	948735466
-	.long	1072794361
-	.long	3516338028
-	.long	3163623459
-	.long	1480023343
-	.long	1072797478
-	.long	2247196168
-	.long	1016376029
-	.long	3949972341
-	.long	1072800603
-	.long	2068408548
-	.long	1015962444
-	.long	4162030108
-	.long	1072803737
-	.long	2763428480
-	.long	1016577925
-	.long	2214878420
-	.long	1072806880
-	.long	892270087
-	.long	3164164998
-	.long	2502433899
-	.long	1072810031
-	.long	2148595913
-	.long	1016072567
-	.long	828946858
-	.long	1072813191
-	.long	10642492
-	.long	1016988014
-	.long	1588871207
-	.long	1072816359
-	.long	143439582
-	.long	3164011992
-	.long	586995997
-	.long	1072819536
-	.long	41662348
-	.long	3163676568
-	.long	2218315341
-	.long	1072822721
-	.long	2694295388
-	.long	3164337444
-	.long	2288159958
-	.long	1072825915
-	.long	2169144469
-	.long	1015924597
-	.long	897099801
-	.long	1072829118
-	.long	754756297
-	.long	1016289581
-	.long	2440944790
-	.long	1072832329
-	.long	2492769774
-	.long	1015196030
-	.long	2725843665
-	.long	1072835549
-	.long	1433917087
-	.long	1015887099
-	.long	1853186616
-	.long	1072838778
-	.long	3066496371
-	.long	1016705150
-	.long	4219606026
-	.long	1072842015
-	.long	2434574742
-	.long	1015730124
-	.long	1337108031
-	.long	1072845262
-	.long	3203724452
-	.long	1015726421
-	.long	1897844341
-	.long	1072848517
-	.long	1254300460
-	.long	1016324514
-	.long	1709341917
-	.long	1072851781
-	.long	2571168217
-	.long	1015201075
-	.long	874372905
-	.long	1072855054
-	.long	100263788
-	.long	1016989308
-	.long	3790955393
-	.long	1072858335
-	.long	2352942462
-	.long	3164228666
-	.long	1972484976
-	.long	1072861626
-	.long	675290301
-	.long	3162688626
-	.long	4112506593
-	.long	1072864925
-	.long	2947355221
-	.long	1015419624
-	.long	1724976915
-	.long	1072868234
-	.long	420909223
-	.long	3164165955
-	.long	3504003472
-	.long	1072871551
-	.long	3594001060
-	.long	3158379228
-	.long	964107055
-	.long	1072874878
-	.long	2800439588
-	.long	3163881797
-	.long	2799960843
-	.long	1072878213
-	.long	1423655381
-	.long	1016070727
-	.long	526652809
-	.long	1072881558
-	.long	4223459736
-	.long	1016927951
-	.long	2839424854
-	.long	1072884911
-	.long	1171596163
-	.long	1014090255
-	.long	1253935211
-	.long	1072888274
-	.long	1395382931
-	.long	3160751189
-	.long	171030293
-	.long	1072891646
-	.long	3526460132
-	.long	1015477354
-	.long	3991843581
-	.long	1072895026
-	.long	4092853457
-	.long	1015634339
-	.long	4232894513
-	.long	1072898416
-	.long	2383938684
-	.long	1015717095
-	.long	1000925746
-	.long	1072901816
-	.long	1018491672
-	.long	3164358120
-	.long	2992903935
-	.long	1072905224
-	.long	2218154406
-	.long	1016276769
-	.long	1726216749
-	.long	1072908642
-	.long	2466808228
-	.long	3162724981
-	.long	1603444721
-	.long	1072912069
-	.long	1548633640
-	.long	3163249902
-	.long	2732492859
-	.long	1072915505
-	.long	2691479646
-	.long	3163304260
-	.long	926591435
-	.long	1072918951
-	.long	3208833762
-	.long	3163962090
-	.long	589198666
-	.long	1072922406
-	.long	2664346172
-	.long	3164206538
-	.long	1829099622
-	.long	1072925870
-	.long	1016661181
-	.long	3164509581
-	.long	460407023
-	.long	1072929344
-	.long	4237175092
-	.long	3164187045
-	.long	887463927
-	.long	1072932827
-	.long	3596744163
-	.long	3161842742
-	.long	3219942644
-	.long	1072936319
-	.long	3798990616
-	.long	1016417382
-	.long	3272845541
-	.long	1072939821
-	.long	928852419
-	.long	3164536824
-	.long	1156440435
-	.long	1072943333
-	.long	2351451249
-	.long	1015015632
-	.long	1276261410
-	.long	1072946854
-	.long	300981948
-	.long	1015732745
-	.long	3743175029
-	.long	1072950384
-	.long	2072812490
-	.long	3163223651
-	.long	78413852
-	.long	1072953925
-	.long	4183226867
-	.long	3164065827
-	.long	3278348324
-	.long	1072957474
-	.long	3069497416
-	.long	1015799288
-	.long	569847338
-	.long	1072961034
-	.long	472945272
-	.long	3160339305
-	.long	654919306
-	.long	1072964603
-	.long	3232961757
-	.long	3164096045
-	.long	3645941911
-	.long	1072968181
-	.long	3814685081
-	.long	3162621917
-	.long	1065662932
-	.long	1072971770
-	.long	2533670915
-	.long	1015578814
-	.long	1617004845
-	.long	1072975368
-	.long	82804944
-	.long	1011391354
-	.long	1118294578
-	.long	1072978976
-	.long	2197495694
-	.long	3160957977
-	.long	3978100823
-	.long	1072982593
-	.long	3513027190
-	.long	1016894539
-	.long	1720398391
-	.long	1072986221
-	.long	3980678963
-	.long	3164348656
-	.long	3049340112
-	.long	1072989858
-	.long	3062915824
-	.long	1014219171
-	.long	3784486610
-	.long	1072993505
-	.long	1581883040
-	.long	3162747529
-	.long	4040676318
-	.long	1072997162
-	.long	4090609238
-	.long	1016712034
-	.long	3933059031
-	.long	1073000829
-	.long	2133366768
-	.long	3162580408
-	.long	3577096743
-	.long	1073004506
-	.long	2951496418
-	.long	1014842263
-	.long	3088564500
-	.long	1073008193
-	.long	1762311517
-	.long	1016094249
-	.long	2583551245
-	.long	1073011890
-	.long	3161094195
-	.long	1016655067
-	.long	2178460671
-	.long	1073015597
-	.long	777878098
-	.long	3163891069
-	.long	1990012071
-	.long	1073019314
-	.long	3529070563
-	.long	3163861769
-	.long	2135241198
-	.long	1073023041
-	.long	1236747871
-	.long	1014637723
-	.long	2731501122
-	.long	1073026778
-	.long	1774031855
-	.long	3163518597
-	.long	3896463087
-	.long	1073030525
-	.long	1139797873
-	.long	3162282381
-	.long	1453150082
-	.long	1073034283
-	.long	498154669
-	.long	3162536638
-	.long	4109806887
-	.long	1073038050
-	.long	422403966
-	.long	1015517805
-	.long	3395129871
-	.long	1073041828
-	.long	4025345435
-	.long	3163383964
-	.long	3723038930
-	.long	1073045616
-	.long	378465264
-	.long	3163618158
-	.long	917841882
-	.long	1073049415
-	.long	18715565
-	.long	1016707884
-	.long	3689071823
-	.long	1073053223
-	.long	2321004996
-	.long	3163601292
-	.long	3566716925
-	.long	1073057042
-	.long	1536826856
-	.long	1015191009
-	.long	671025100
-	.long	1073060872
-	.long	3832014351
-	.long	3164070606
-	.long	3712504873
-	.long	1073064711
-	.long	88491949
-	.long	1016476236
-	.long	4222122499
-	.long	1073068561
-	.long	1277378074
-	.long	3164305313
-	.long	2321106615
-	.long	1073072422
-	.long	2171176610
-	.long	1010584347
-	.long	2425981843
-	.long	1073076293
-	.long	2830390851
-	.long	3164395175
-	.long	363667784
-	.long	1073080175
-	.long	813753950
-	.long	1016833785
-	.long	551349105
-	.long	1073084067
-	.long	3821916050
-	.long	3163155165
-	.long	3111574537
-	.long	1073087969
-	.long	2606161479
-	.long	3163808322
-	.long	3872257780
-	.long	1073091882
-	.long	1253592103
-	.long	1017006910
-	.long	2956612997
-	.long	1073095806
-	.long	2118169751
-	.long	3163784129
-	.long	488188413
-	.long	1073099741
-	.long	3199821029
-	.long	1016612624
-	.long	885834528
-	.long	1073103686
-	.long	1973258547
-	.long	3163310140
-	.long	4273770423
-	.long	1073107641
-	.long	3383180809
-	.long	3164267477
-	.long	2186617381
-	.long	1073111608
-	.long	2270764084
-	.long	3164321289
-	.long	3339203574
-	.long	1073115585
-	.long	1483497780
-	.long	3163457330
-	.long	3561793907
-	.long	1073119573
-	.long	1157054053
-	.long	1012938926
-	.long	2979960120
-	.long	1073123572
-	.long	2599109725
-	.long	1015547069
-	.long	1719614413
-	.long	1073127582
-	.long	330458198
-	.long	3164331316
-	.long	4201977662
-	.long	1073131602
-	.long	748330254
-	.long	1014642933
-	.long	1963711167
-	.long	1073135634
-	.long	1744767757
-	.long	3161622870
-	.long	3721688645
-	.long	1073139676
-	.long	3069276937
-	.long	1016887977
-	.long	1013258799
-	.long	1073143730
-	.long	1748797611
-	.long	3161177658
-	.long	2555984613
-	.long	1073147794
-	.long	2652555442
-	.long	3163601268
-	.long	4182873220
-	.long	1073151869
-	.long	629542646
-	.long	3163044879
-	.long	1727278727
-	.long	1073155956
-	.long	3562710623
-	.long	1012520516
-	.long	3907805044
-	.long	1073160053
-	.long	2257091225
-	.long	3162598983
-	.long	2263535754
-	.long	1073164162
-	.long	752233586
-	.long	3163687584
-	.long	1218806132
-	.long	1073168282
-	.long	1818613052
-	.long	3163597017
-	.long	903334909
-	.long	1073172413
-	.long	1636462108
-	.long	1016088573
-	.long	1447192521
-	.long	1073176555
-	.long	1462857171
-	.long	3163563097
-	.long	2980802057
-	.long	1073180708
-	.long	378619896
-	.long	1016821879
-	.long	1339972927
-	.long	1073184873
-	.long	167908909
-	.long	1016620728
-	.long	950803702
-	.long	1073189049
-	.long	1655364926
-	.long	1016285608
-	.long	1944781191
-	.long	1073193236
-	.long	3993278767
-	.long	3162772855
-	.long	158781403
-	.long	1073197435
-	.long	2221464712
-	.long	3164335029
-	.long	19972402
-	.long	1073201645
-	.long	3507899862
-	.long	1017057868
-	.long	1660913392
-	.long	1073205866
-	.long	4218599604
-	.long	1016184283
-	.long	919555682
-	.long	1073210099
-	.long	3121969534
-	.long	1013996802
-	.long	2224145553
-	.long	1073214343
-	.long	3482522030
-	.long	3162537745
-	.long	1413356050
-	.long	1073218599
-	.long	1651349291
-	.long	3163716742
-	.long	2916157145
-	.long	1073222866
-	.long	219487565
-	.long	1016357943
-	.long	2571947539
-	.long	1073227145
-	.long	3558159064
-	.long	3164425245
-	.long	515457527
-	.long	1073231436
-	.long	836709333
-	.long	1016699802
-	.long	1176749997
-	.long	1073235738
-	.long	2738998779
-	.long	3163084420
-	.long	396319521
-	.long	1073240052
-	.long	4172420816
-	.long	3160123208
-	.long	2604962541
-	.long	1073244377
-	.long	2614425274
-	.long	3164587768
-	.long	3643909174
-	.long	1073248714
-	.long	3537586109
-	.long	1015403223
-	.long	3649726105
-	.long	1073253063
-	.long	4085036346
-	.long	1016698050
-	.long	2759350287
-	.long	1073257424
-	.long	1148526634
-	.long	1016943509
-	.long	1110089947
-	.long	1073261797
-	.long	1451641639
-	.long	1016523249
-	.long	3134592888
-	.long	1073266181
-	.long	4232266862
-	.long	1017039710
-	.long	380978316
-	.long	1073270578
-	.long	854188970
-	.long	3161511262
-	.long	1577608921
-	.long	1073274986
-	.long	1875489510
-	.long	3164016970
-	.long	2568320822
-	.long	1073279406
-	.long	2732824428
-	.long	1015401491
-	.long	3492293770
-	.long	1073283838
-	.long	2248032210
-	.long	1016435402
-	.long	194117574
-	.long	1073288283
-	.long	777528612
-	.long	3164460665
-	.long	1403662306
-	.long	1073292739
-	.long	2788809599
-	.long	3162719583
-	.long	2966275557
-	.long	1073297207
-	.long	2176155324
-	.long	3160891335
-	.long	727685349
-	.long	1073301688
-	.long	2038246809
-	.long	3163407318
-	.long	3418903055
-	.long	1073306180
-	.long	2527457337
-	.long	3161869180
-	.long	2591453363
-	.long	1073310685
-	.long	2132396182
-	.long	3160122774
-	.long	2682146384
-	.long	1073315202
-	.long	2082178513
-	.long	3164411995
-	.long	3833209506
-	.long	1073319731
-	.long	2722920684
-	.long	1014803418
-	.long	1892288442
-	.long	1073324273
-	.long	2446255666
-	.long	3163648957
-	.long	1297350157
-	.long	1073328827
-	.long	1308022040
-	.long	3164461134
-	.long	2191782032
-	.long	1073333393
-	.long	2960257726
-	.long	1014791238
-	.long	424392917
-	.long	1073337972
-	.long	2749202995
-	.long	3163887294
-	.long	434316067
-	.long	1073342563
-	.long	2028358766
-	.long	1014506698
-	.long	2366108318
-	.long	1073347166
-	.long	2867985102
-	.long	3162810830
-	.long	2069751141
-	.long	1073351782
-	.long	1562170675
-	.long	3163773257
-	.long	3985553595
-	.long	1073356410
-	.long	4002146062
-	.long	1016882712
-	.long	3964284211
-	.long	1073361051
-	.long	2111583915
-	.long	1016475740
-	.long	2152073944
-	.long	1073365705
-	.long	1486860576
-	.long	3164252032
-	.long	2990417245
-	.long	1073370371
-	.long	3683467745
-	.long	3164417902
-	.long	2331271250
-	.long	1073375050
-	.long	812057446
-	.long	1013256022
-	.long	321958744
-	.long	1073379742
-	.long	3401933767
-	.long	1016843134
-	.long	1405169241
-	.long	1073384446
-	.long	2998539689
-	.long	3163879527
-	.long	1434058175
-	.long	1073389163
-	.long	251133233
-	.long	1016134345
-	.long	557149882
-	.long	1073393893
-	.long	3672720709
-	.long	1015585841
-	.long	3218338682
-	.long	1073398635
-	.long	3404164304
-	.long	3163525684
-	.long	977020788
-	.long	1073403391
-	.long	3065100517
-	.long	1016590139
-	.long	2572866477
-	.long	1073408159
-	.long	878562433
-	.long	1016570317
-	.long	3861050111
-	.long	1073412940
-	.long	254893773
-	.long	3163861756
-	.long	697153126
-	.long	1073417735
-	.long	1283515429
-	.long	3164331765
-	.long	1822067026
-	.long	1073422542
-	.long	1241994956
-	.long	1016388866
-	.long	3092190715
-	.long	1073427362
-	.long	814012168
-	.long	3160571998
-	.long	364333489
-	.long	1073432196
-	.long	3923737744
-	.long	3162469949
-	.long	2380618042
-	.long	1073437042
-	.long	3149557219
-	.long	3164369375
-	.long	703710506
-	.long	1073441902
-	.long	1384660846
-	.long	1016244467
-	.long	4076559943
-	.long	1073446774
-	.long	2119478331
-	.long	3161806927
-	.long	4062661092
-	.long	1073451660
-	.long	1422616006
-	.long	3164303894
-	.long	815859274
-	.long	1073456560
-	.long	240396590
-	.long	3164536019
-	.long	3080351519
-	.long	1073461472
-	.long	3379126789
-	.long	3158266577
-	.long	2420883922
-	.long	1073466398
-	.long	2049810052
-	.long	1015168464
-	.long	3287523847
-	.long	1073471337
-	.long	1625971539
-	.long	3158058531
-	.long	1540824585
-	.long	1073476290
-	.long	1064017011
-	.long	3164536266
-	.long	1631695677
-	.long	1073481256
-	.long	2717633076
-	.long	3163392602
-	.long	3716502172
-	.long	1073486235
-	.long	2303740125
-	.long	1015091301
-	.long	3657065772
-	.long	1073491228
-	.long	399025623
-	.long	3164005654
-	.long	1610600570
-	.long	1073496235
-	.long	3766732298
-	.long	1016808759
-	.long	2029714210
-	.long	1073501255
-	.long	613660079
-	.long	1016147719
-	.long	777507147
-	.long	1073506289
-	.long	4282924205
-	.long	1016236109
-	.long	2307442995
-	.long	1073511336
-	.long	3190117721
-	.long	3163453115
-	.long	2483480501
-	.long	1073516397
-	.long	1216371780
-	.long	1014082748
-	.long	1464976603
-	.long	1073521472
-	.long	3507292405
-	.long	3163026110
-	.long	3706687593
-	.long	1073526560
-	.long	3521726939
-	.long	1014301643
-	.long	778901109
-	.long	1073531663
-	.long	2248183954
-	.long	3162317327
-	.long	1432208378
-	.long	1073536779
-	.long	1401068914
-	.long	3163412539
-	.long	1532734324
-	.long	1073541909
-	.long	3094216535
-	.long	3164211433
-	.long	1242007932
-	.long	1073547053
-	.long	1132034716
-	.long	3164388407
-	.long	721996136
-	.long	1073552211
-	.long	563754734
-	.long	1016419894
-	.long	135105010
-	.long	1073557383
-	.long	1906148728
-	.long	3164424315
-	.long	3939148246
-	.long	1073562568
-	.long	3210352148
-	.long	1016322899
-	.long	3707479175
-	.long	1073567768
-	.long	3613079303
-	.long	1015213314
-	.long	3898795731
-	.long	1073572982
-	.long	1249994144
-	.long	1012918394
-	.long	382305176
-	.long	1073578211
-	.long	2347622376
-	.long	3163627201
-	.long	1912561781
-	.long	1073583453
-	.long	3147495102
-	.long	1016726829
-	.long	64696965
-	.long	1073588710
-	.long	1768797490
-	.long	1016865536
-	.long	3594158869
-	.long	1073593980
-	.long	2456521700
-	.long	3164305137
-	.long	4076975200
-	.long	1073599265
-	.long	2029000899
-	.long	1016257111
-	.long	1679558232
-	.long	1073604565
-	.long	2390342287
-	.long	3164382546
-	.long	863738719
-	.long	1073609879
-	.long	1326992220
-	.long	3163661773
-	.long	1796832535
-	.long	1073615207
-	.long	3176955716
-	.long	3161634089
-	.long	351641897
-	.long	1073620550
-	.long	2172261526
-	.long	3164059175
-	.long	991358482
-	.long	1073625907
-	.long	838715019
-	.long	3164206244
-	.long	3884662774
-	.long	1073631278
-	.long	2158611599
-	.long	1015258761
-	.long	610758006
-	.long	1073636665
-	.long	1965209397
-	.long	3162914808
-	.long	4224142467
-	.long	1073642065
-	.long	3389820386
-	.long	1016255778
-	.long	2009970496
-	.long	1073647481
-	.long	2159039665
-	.long	3163621524
-	.long	2728693978
-	.long	1073652911
-	.long	396109971
-	.long	3164511267
-	.long	2256325230
-	.long	1073658356
-	.long	580117746
-	.long	1016365871
-	.long	764307441
-	.long	1073663816
-	.long	3021057420
-	.long	3164378099
-	.long	2719515920
-	.long	1073669290
-	.long	2760332941
-	.long	1016186509
-	.long	3999357479
-	.long	1073674779
-	.long	2258941616
-	.long	1016973300
-	.long	481706282
-	.long	1073680284
-	.long	1696079173
-	.long	3163759104
-	.long	929806999
-	.long	1073685803
-	.long	3205336643
-	.long	1016308133
-	.long	1222472308
-	.long	1073691337
-	.long	1054357470
-	.long	3162069594
-	.long	1533953344
-	.long	1073696886
-	.long	769171851
-	.long	1016714209
-	.long	2038973688
-	.long	1073702450
-	.long	892941374
-	.long	1017095035
-	.long	2912730644
-	.long	1073708029
-	.long	3490067722
-	.long	3164453650
-	.long	35929225
-	.long	1073713624
-	.long	2809788041
-	.long	3160485544
-	.long	2174652632
-	.long	1073719233
-	.long	4087714590
-	.long	1015498835
-	.long	915592468
-	.long	1073724858
-	.long	352947894
-	.long	3162072947
-	.long	730821105
-	.long	1073730498
-	.long	2523232743
-	.long	1013115764
-	.long	1797923801
-	.long	1073736153
-	.long	1950547427
-	.long	1014277635
-	.type	T_exp,@object
-	.size	T_exp,4096
-	.space 512, 0x00 	# pad
-	.align 16
-e_coeff:
-	.long	3884607281
-	.long	1062590591
-	.long	3607404736
-	.long	1068264200
-	.long	1874480759
-	.long	1065595563
-	.long	4286760335
-	.long	1070514109
-	.long	4277811695
-	.long	1072049730
-	.long	0
-	.long	0
-	.type	e_coeff,@object
-	.size	e_coeff,48
-	.align 16
-coeff_h:
-	.long	0
-	.long	3218479616
-	.long	0
-	.long	3210587105
-	.type	coeff_h,@object
-	.size	coeff_h,16
-	.align 16
-HIGHMASK_LOG_X:
-	.long	4160749568
-	.long	4294967295
-	.long	0
-	.long	4294965248
-	.type	HIGHMASK_LOG_X,@object
-	.size	HIGHMASK_LOG_X,16
-	.align 8
-HALFMASK:
-	.long	4160749568
-	.long	4294967295
-	.long	4160749568
-	.long	4294967295
-	.type	HALFMASK,@object
-	.size	HALFMASK,16
-	.align 8
-log2:
-	.long	4277811695
-	.long	1072049730
-	.long	4277811695
-	.long	3219533378
-	.type	log2,@object
-	.size	log2,16
-	.data
-	.section .note.GNU-stack, ""
-// -- Begin DWARF2 SEGMENT .eh_frame
-	.section .eh_frame,"a",@progbits
-.eh_frame_seg:
-	.align 1
-	.4byte 0x00000014
-	.8byte 0x00527a0100000000
-	.8byte 0x08070c1b01107801
-	.4byte 0x00000190
-	.4byte 0x0000001c
-	.4byte 0x0000001c
-	.4byte ..___tag_value_pow.1-.
-	.4byte ..___tag_value_pow.5-..___tag_value_pow.1
-	.2byte 0x0400
-	.4byte ..___tag_value_pow.3-..___tag_value_pow.1
-	.2byte 0x300e
-	.byte 0x04
-	.4byte ..___tag_value_pow.4-..___tag_value_pow.3
-	.2byte 0x080e
-	.byte 0x00
-# End
diff --git a/linker/Android.bp b/linker/Android.bp
index 5e7a921..e2cdd14 100644
--- a/linker/Android.bp
+++ b/linker/Android.bp
@@ -177,11 +177,6 @@
         "-Wextra",
         "-Wunused",
         "-Werror",
-
-        // Define _USING_LIBCXX so <stdatomic.h> defers to the <atomic> header. When a Soong module
-        // uses the platform libc++, Soong automatically passes this macro, but the dynamic linker
-        // links against libc++ manually.
-        "-D_USING_LIBCXX",
     ],
 
     // TODO: split out the asflags.
@@ -300,7 +295,10 @@
 
     target: {
         android: {
-            static_libs: ["libdebuggerd_handler_fallback"],
+            static_libs: [
+                "libc++demangle",
+                "libdebuggerd_handler_fallback",
+            ],
         },
     },
     compile_multilib: "both",
diff --git a/linker/ld.config.format.md b/linker/ld.config.format.md
index faf5cc8..f9fbcde 100644
--- a/linker/ld.config.format.md
+++ b/linker/ld.config.format.md
@@ -25,7 +25,7 @@
 ## Example
 
 ```
-# The following line maps section to a dir. Binraies ran from this location will use namespaces
+# The following line maps section to a dir. Binaries ran from this location will use namespaces
 # configuration specified in [example_section] below
 dir.example_section=/system/bin/example
 
@@ -38,7 +38,7 @@
 # default value is false
 enable.target.sdk.version = true
 
-# This property can be used to declare additional namespaces.Note that there is always the default
+# This property can be used to declare additional namespaces. Note that there is always the default
 # namespace. The default namespace is the namespace for the main executable. This list is
 # comma-separated.
 additional.namespaces = ns1
@@ -65,7 +65,7 @@
 # This declares linked namespaces - comma separated list.
 namespace.default.links = ns1
 
-# For every link define list of shared libraries. This is list of the libraries accessilbe from
+# For every link define list of shared libraries. This is list of the libraries accessible from
 # default namespace but loaded in the linked namespace.
 namespace.default.link.ns1.shared_libs = libexternal.so:libother.so
 
diff --git a/linker/linker.cpp b/linker/linker.cpp
index df7dd40..0bc3121 100644
--- a/linker/linker.cpp
+++ b/linker/linker.cpp
@@ -46,8 +46,8 @@
 
 #include <android-base/properties.h>
 #include <android-base/scopeguard.h>
-
 #include <async_safe/log.h>
+#include <bionic/pthread_internal.h>
 
 // Private C library headers.
 
@@ -76,6 +76,7 @@
 
 static std::unordered_map<void*, size_t> g_dso_handle_counters;
 
+static bool g_anonymous_namespace_set = false;
 static android_namespace_t* g_anonymous_namespace = &g_default_namespace;
 static std::unordered_map<std::string, android_namespace_t*> g_exported_namespaces;
 
@@ -85,11 +86,16 @@
 static LinkerTypeAllocator<android_namespace_t> g_namespace_allocator;
 static LinkerTypeAllocator<LinkedListEntry<android_namespace_t>> g_namespace_list_allocator;
 
+static uint64_t g_module_load_counter = 0;
+static uint64_t g_module_unload_counter = 0;
+
 static const char* const kLdConfigArchFilePath = "/system/etc/ld.config." ABI_STRING ".txt";
 
 static const char* const kLdConfigFilePath = "/system/etc/ld.config.txt";
 static const char* const kLdConfigVndkLiteFilePath = "/system/etc/ld.config.vndk_lite.txt";
 
+static const char* const kLdGeneratedConfigFilePath = "/dev/linkerconfig/ld.config.txt";
+
 #if defined(__LP64__)
 static const char* const kSystemLibDir        = "/system/lib64";
 static const char* const kOdmLibDir           = "/odm/lib64";
@@ -97,7 +103,7 @@
 static const char* const kAsanSystemLibDir    = "/data/asan/system/lib64";
 static const char* const kAsanOdmLibDir       = "/data/asan/odm/lib64";
 static const char* const kAsanVendorLibDir    = "/data/asan/vendor/lib64";
-static const char* const kRuntimeApexLibDir   = "/apex/com.android.runtime/lib64";
+static const char* const kArtApexLibDir       = "/apex/com.android.art/lib64";
 #else
 static const char* const kSystemLibDir        = "/system/lib";
 static const char* const kOdmLibDir           = "/odm/lib";
@@ -105,7 +111,7 @@
 static const char* const kAsanSystemLibDir    = "/data/asan/system/lib";
 static const char* const kAsanOdmLibDir       = "/data/asan/odm/lib";
 static const char* const kAsanVendorLibDir    = "/data/asan/vendor/lib";
-static const char* const kRuntimeApexLibDir   = "/apex/com.android.runtime/lib";
+static const char* const kArtApexLibDir       = "/apex/com.android.art/lib";
 #endif
 
 static const char* const kAsanLibDirPrefix = "/data/asan";
@@ -239,7 +245,7 @@
  * return true if translation is needed
  */
 static bool translateSystemPathToApexPath(const char* name, std::string* out_name_to_apex) {
-  static const char* const kSystemToRuntimeApexLibs[] = {
+  static const char* const kSystemToArtApexLibs[] = {
     "libicuuc.so",
     "libicui18n.so",
   };
@@ -257,9 +263,9 @@
 
   const char* base_name = basename(name);
 
-  for (const char* soname : kSystemToRuntimeApexLibs) {
+  for (const char* soname : kSystemToArtApexLibs) {
     if (strcmp(base_name, soname) == 0) {
-      *out_name_to_apex = std::string(kRuntimeApexLibDir) + "/" + base_name;
+      *out_name_to_apex = std::string(kArtApexLibDir) + "/" + base_name;
       return true;
     }
   }
@@ -270,8 +276,6 @@
 
 static std::vector<std::string> g_ld_preload_names;
 
-static bool g_anonymous_namespace_initialized;
-
 #if STATS
 struct linker_stats_t {
   int count[kRelocMax];
@@ -423,6 +427,24 @@
   return true;
 }
 
+// Returns the address of the current thread's copy of a TLS module. If the current thread doesn't
+// have a copy yet, allocate one on-demand if should_alloc is true, and return nullptr otherwise.
+static inline void* get_tls_block_for_this_thread(const soinfo_tls* si_tls, bool should_alloc) {
+  const TlsModule& tls_mod = get_tls_module(si_tls->module_id);
+  if (tls_mod.static_offset != SIZE_MAX) {
+    const StaticTlsLayout& layout = __libc_shared_globals()->static_tls_layout;
+    char* static_tls = reinterpret_cast<char*>(__get_bionic_tcb()) - layout.offset_bionic_tcb();
+    return static_tls + tls_mod.static_offset;
+  } else if (should_alloc) {
+    const TlsIndex ti { si_tls->module_id, 0 };
+    return TLS_GET_ADDR(&ti);
+  } else {
+    TlsDtv* dtv = __get_tcb_dtv(__get_bionic_tcb());
+    if (dtv->generation < tls_mod.first_generation) return nullptr;
+    return dtv->modules[__tls_module_id_to_idx(si_tls->module_id)];
+  }
+}
+
 #if defined(__arm__)
 
 // For a given PC, find the .so that it belongs to.
@@ -452,6 +474,16 @@
     dl_info.dlpi_name = si->link_map_head.l_name;
     dl_info.dlpi_phdr = si->phdr;
     dl_info.dlpi_phnum = si->phnum;
+    dl_info.dlpi_adds = g_module_load_counter;
+    dl_info.dlpi_subs = g_module_unload_counter;
+    if (soinfo_tls* tls_module = si->get_tls()) {
+      dl_info.dlpi_tls_modid = tls_module->module_id;
+      dl_info.dlpi_tls_data = get_tls_block_for_this_thread(tls_module, /*should_alloc=*/false);
+    } else {
+      dl_info.dlpi_tls_modid = 0;
+      dl_info.dlpi_tls_data = nullptr;
+    }
+
     rv = cb(&dl_info, sizeof(dl_phdr_info), data);
     if (rv != 0) {
       break;
@@ -951,7 +983,9 @@
 }
 
 soinfo* find_containing_library(const void* p) {
-  ElfW(Addr) address = reinterpret_cast<ElfW(Addr)>(p);
+  // Addresses within a library may be tagged if they point to globals. Untag
+  // them so that the bounds check succeeds.
+  ElfW(Addr) address = reinterpret_cast<ElfW(Addr)>(untag_address(p));
   for (soinfo* si = solist_get_head(); si != nullptr; si = si->next) {
     if (address < si->base || address - si->base >= si->size) {
       continue;
@@ -1901,6 +1935,9 @@
           // flag is set.
           link_extinfo = extinfo;
         }
+        if (__libc_shared_globals()->load_hook) {
+          __libc_shared_globals()->load_hook(si->load_bias, si->phdr, si->phnum);
+        }
         if (!si->link_image(global_group, local_group, link_extinfo, &relro_fd_offset) ||
             !get_cfi_shadow()->AfterLoad(si, solist_get_head())) {
           return false;
@@ -2037,8 +2074,12 @@
            "... dlclose: unloading \"%s\"@%p ...",
            si->get_realpath(),
            si);
+    ++g_module_unload_counter;
     notify_gdb_of_unload(si);
     unregister_soinfo_tls(si);
+    if (__libc_shared_globals()->unload_hook) {
+      __libc_shared_globals()->unload_hook(si->load_bias, si->phdr, si->phnum);
+    }
     get_cfi_shadow()->BeforeUnload(si);
     soinfo_free(si);
   }
@@ -2420,18 +2461,15 @@
     if ((bind == STB_GLOBAL || bind == STB_WEAK) && sym->st_shndx != 0) {
       if (type == STT_TLS) {
         // For a TLS symbol, dlsym returns the address of the current thread's
-        // copy of the symbol. This function may allocate a DTV and/or storage
-        // for the source TLS module. (Allocating a DTV isn't necessary if the
-        // symbol is part of static TLS, but it's simpler to reuse
-        // __tls_get_addr.)
-        soinfo_tls* tls_module = found->get_tls();
+        // copy of the symbol.
+        const soinfo_tls* tls_module = found->get_tls();
         if (tls_module == nullptr) {
           DL_ERR("TLS symbol \"%s\" in solib \"%s\" with no TLS segment",
                  sym_name, found->get_realpath());
           return false;
         }
-        const TlsIndex ti { tls_module->module_id, sym->st_value };
-        *symbol = TLS_GET_ADDR(&ti);
+        void* tls_block = get_tls_block_for_this_thread(tls_module, /*should_alloc=*/true);
+        *symbol = static_cast<char*>(tls_block) + sym->st_value;
       } else {
         *symbol = reinterpret_cast<void*>(found->resolve_symbol_address(sym));
       }
@@ -2471,14 +2509,29 @@
   return 0;
 }
 
-bool init_anonymous_namespace(const char* shared_lib_sonames, const char* library_search_path) {
-  if (g_anonymous_namespace_initialized) {
-    DL_ERR("anonymous namespace has already been initialized.");
-    return false;
+// Make ns as the anonymous namespace that is a namespace used when
+// we fail to determine the caller address (e.g., call from mono-jited code)
+// Since there can be multiple anonymous namespace in a process, subsequent
+// call to this function causes an error.
+static bool set_anonymous_namespace(android_namespace_t* ns) {
+  if (!g_anonymous_namespace_set && ns != nullptr) {
+    CHECK(ns->is_also_used_as_anonymous());
+    g_anonymous_namespace = ns;
+    g_anonymous_namespace_set = true;
+    return true;
   }
+  return false;
+}
 
+// TODO(b/130388701) remove this. Currently, this is used only for testing
+// where we don't have classloader namespace.
+bool init_anonymous_namespace(const char* shared_lib_sonames, const char* library_search_path) {
   ProtectedDataGuard guard;
 
+  // Test-only feature: we need to change the anonymous namespace multiple times
+  // while the test is running.
+  g_anonymous_namespace_set = false;
+
   // create anonymous namespace
   // When the caller is nullptr - create_namespace will take global group
   // from the anonymous namespace, which is fine because anonymous namespace
@@ -2488,21 +2541,18 @@
                        "(anonymous)",
                        nullptr,
                        library_search_path,
-                       ANDROID_NAMESPACE_TYPE_ISOLATED,
+                       ANDROID_NAMESPACE_TYPE_ISOLATED |
+                       ANDROID_NAMESPACE_TYPE_ALSO_USED_AS_ANONYMOUS,
                        nullptr,
                        &g_default_namespace);
 
-  if (anon_ns == nullptr) {
-    return false;
-  }
+  CHECK(anon_ns != nullptr);
 
   if (!link_namespaces(anon_ns, &g_default_namespace, shared_lib_sonames)) {
+    // TODO: delete anon_ns
     return false;
   }
 
-  g_anonymous_namespace = anon_ns;
-  g_anonymous_namespace_initialized = true;
-
   return true;
 }
 
@@ -2542,6 +2592,7 @@
   ns->set_name(name);
   ns->set_isolated((type & ANDROID_NAMESPACE_TYPE_ISOLATED) != 0);
   ns->set_greylist_enabled((type & ANDROID_NAMESPACE_TYPE_GREYLIST_ENABLED) != 0);
+  ns->set_also_used_as_anonymous((type & ANDROID_NAMESPACE_TYPE_ALSO_USED_AS_ANONYMOUS) != 0);
 
   if ((type & ANDROID_NAMESPACE_TYPE_SHARED) != 0) {
     // append parent namespace paths.
@@ -2573,6 +2624,16 @@
   ns->set_default_library_paths(std::move(default_library_paths));
   ns->set_permitted_paths(std::move(permitted_paths));
 
+  if (ns->is_also_used_as_anonymous() && !set_anonymous_namespace(ns)) {
+    DL_ERR("failed to set namespace: [name=\"%s\", ld_library_path=\"%s\", default_library_paths=\"%s\""
+           " permitted_paths=\"%s\"] as the anonymous namespace",
+           ns->get_name(),
+           android::base::Join(ns->get_ld_library_paths(), ':').c_str(),
+           android::base::Join(ns->get_default_library_paths(), ':').c_str(),
+           android::base::Join(ns->get_permitted_paths(), ':').c_str());
+    return nullptr;
+  }
+
   return ns;
 }
 
@@ -4074,6 +4135,7 @@
     }
   }
 
+  ++g_module_load_counter;
   notify_gdb_of_load(this);
   set_image_linked();
   return true;
@@ -4142,6 +4204,13 @@
   }
 #endif
 
+  // Use generated linker config if flag is set
+  // TODO(b/138920271) Do not check property once it is confirmed as stable
+  if (android::base::GetBoolProperty("sys.linker.use_generated_config", false) &&
+      file_exists(kLdGeneratedConfigFilePath)) {
+    return kLdGeneratedConfigFilePath;
+  }
+
   std::string path = get_ld_config_file_apex_path(executable_path);
   if (!path.empty()) {
     if (file_exists(path.c_str())) {
diff --git a/linker/linker.h b/linker/linker.h
index 782da1c..89390b3 100644
--- a/linker/linker.h
+++ b/linker/linker.h
@@ -165,6 +165,13 @@
    */
   ANDROID_NAMESPACE_TYPE_GREYLIST_ENABLED = 0x08000000,
 
+  /* This flag instructs linker to use this namespace as the anonymous
+   * namespace. There can be only one anonymous namespace in a process. If there
+   * already an anonymous namespace in the process, using this flag when
+   * creating a new namespace causes an error
+   */
+  ANDROID_NAMESPACE_TYPE_ALSO_USED_AS_ANONYMOUS = 0x10000000,
+
   ANDROID_NAMESPACE_TYPE_SHARED_ISOLATED = ANDROID_NAMESPACE_TYPE_SHARED |
                                            ANDROID_NAMESPACE_TYPE_ISOLATED,
 };
diff --git a/linker/linker_main.cpp b/linker/linker_main.cpp
index 11d3d29..fd1592d 100644
--- a/linker/linker_main.cpp
+++ b/linker/linker_main.cpp
@@ -63,6 +63,8 @@
 static void get_elf_base_from_phdr(const ElfW(Phdr)* phdr_table, size_t phdr_count,
                                    ElfW(Addr)* base, ElfW(Addr)* load_bias);
 
+static void set_bss_vma_name(soinfo* si);
+
 // These should be preserved static to avoid emitting
 // RELATIVE relocations for the part of the code running
 // before linker links itself.
@@ -366,6 +368,8 @@
   si->set_main_executable();
   init_link_map_head(*si);
 
+  set_bss_vma_name(si);
+
   // Use the executable's PT_INTERP string as the solinker filename in the
   // dynamic linker's module list. gdb reads both PT_INTERP and the module list,
   // and if the paths for the linker are different, gdb will report that the
@@ -570,6 +574,31 @@
   async_safe_fatal("Could not find a PHDR: broken executable?");
 }
 
+/*
+ * Set anonymous VMA name for .bss section.  For DSOs loaded by the linker, this
+ * is done by ElfReader.  This function is here for DSOs loaded by the kernel,
+ * namely the linker itself and the main executable.
+ */
+static void set_bss_vma_name(soinfo* si) {
+  for (size_t i = 0; i < si->phnum; ++i) {
+    auto phdr = &si->phdr[i];
+
+    if (phdr->p_type != PT_LOAD) {
+      continue;
+    }
+
+    ElfW(Addr) seg_start = phdr->p_vaddr + si->load_bias;
+    ElfW(Addr) seg_page_end = PAGE_END(seg_start + phdr->p_memsz);
+    ElfW(Addr) seg_file_end = PAGE_END(seg_start + phdr->p_filesz);
+
+    if (seg_page_end > seg_file_end) {
+      prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME,
+            reinterpret_cast<void*>(seg_file_end), seg_page_end - seg_file_end,
+            ".bss");
+    }
+  }
+}
+
 // Detect an attempt to run the linker on itself. e.g.:
 //   /system/bin/linker64 /system/bin/linker64
 // Use priority-1 to run this constructor before other constructors.
@@ -660,6 +689,9 @@
   // couldn't make system calls on x86 at that point, but we can now...
   if (!tmp_linker_so.protect_relro()) __linker_cannot_link(args.argv[0]);
 
+  // And we can set VMA name for the bss section now
+  set_bss_vma_name(&tmp_linker_so);
+
   // Initialize the linker's static libc's globals
   __libc_init_globals();
 
diff --git a/linker/linker_namespaces.h b/linker/linker_namespaces.h
index 215ad05..9561bb4 100644
--- a/linker/linker_namespaces.h
+++ b/linker/linker_namespaces.h
@@ -72,7 +72,10 @@
 
 struct android_namespace_t {
  public:
-  android_namespace_t() : is_isolated_(false), is_greylist_enabled_(false) {}
+  android_namespace_t() :
+    is_isolated_(false),
+    is_greylist_enabled_(false),
+    is_also_used_as_anonymous_(false) {}
 
   const char* get_name() const { return name_.c_str(); }
   void set_name(const char* name) { name_ = name; }
@@ -83,6 +86,9 @@
   bool is_greylist_enabled() const { return is_greylist_enabled_; }
   void set_greylist_enabled(bool enabled) { is_greylist_enabled_ = enabled; }
 
+  bool is_also_used_as_anonymous() const { return is_also_used_as_anonymous_; }
+  void set_also_used_as_anonymous(bool yes) { is_also_used_as_anonymous_ = yes; }
+
   const std::vector<std::string>& get_ld_library_paths() const {
     return ld_library_paths_;
   }
@@ -164,6 +170,7 @@
   std::string name_;
   bool is_isolated_;
   bool is_greylist_enabled_;
+  bool is_also_used_as_anonymous_;
   std::vector<std::string> ld_library_paths_;
   std::vector<std::string> default_library_paths_;
   std::vector<std::string> permitted_paths_;
diff --git a/linker/linker_sdk_versions.cpp b/linker/linker_sdk_versions.cpp
index b06f3e6..29c0f4a 100644
--- a/linker/linker_sdk_versions.cpp
+++ b/linker/linker_sdk_versions.cpp
@@ -26,10 +26,13 @@
  * SUCH DAMAGE.
  */
 
-#include "linker.h"
-#include <android/api-level.h>
 #include <atomic>
 
+#include <android/api-level.h>
+#include <android/fdsan.h>
+
+#include "linker.h"
+
 static std::atomic<int> g_target_sdk_version(__ANDROID_API__);
 
 void set_application_target_sdk_version(int target) {
@@ -38,6 +41,10 @@
     target = __ANDROID_API__;
   }
   g_target_sdk_version = target;
+
+  if (target < 30) {
+    android_fdsan_set_error_level_from_property(ANDROID_FDSAN_ERROR_LEVEL_WARN_ONCE);
+  }
 }
 
 int get_application_target_sdk_version() {
diff --git a/tests/Android.bp b/tests/Android.bp
index 42d280b..4477b52 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -286,6 +286,7 @@
         "-Wno-builtin-memcpy-chk-size",
         "-Wno-format-security",
         "-Wno-format-zero-length",
+        "-Wno-fortify-source",
         "-Wno-memset-transposed-args",
         "-Wno-strlcpy-strlcat-size",
         "-Wno-strncat-size",
diff --git a/tests/clang_fortify_tests.cpp b/tests/clang_fortify_tests.cpp
index 1b6b898..6923302 100644
--- a/tests/clang_fortify_tests.cpp
+++ b/tests/clang_fortify_tests.cpp
@@ -36,6 +36,11 @@
 // Similarly, there are a few overload tricks we have to emit errors. Ignore any notes from those.
 // expected-note@* 0+{{candidate function}}
 
+// FIXME(b/138701943): Silence warnings produced by -Wfortify-source since they're expected.
+// expected-warning@* 0+{{will always overflow}}
+// expected-warning@* 0+{{size argument is too large}}
+// expected-note@* 0+{{has been explicitly marked unavailable here}}
+
 #ifndef _FORTIFY_SOURCE
 #error "_FORTIFY_SOURCE must be defined"
 #endif
diff --git a/tests/dlext_test.cpp b/tests/dlext_test.cpp
index 67ebf37..e7274f7 100644
--- a/tests/dlext_test.cpp
+++ b/tests/dlext_test.cpp
@@ -29,9 +29,7 @@
 #include <android-base/file.h>
 #include <android-base/strings.h>
 
-#include <linux/memfd.h>
 #include <sys/mman.h>
-#include <sys/syscall.h>
 #include <sys/types.h>
 #include <sys/vfs.h>
 #include <sys/wait.h>
@@ -363,8 +361,10 @@
 
   uint32_t* taxicab_number = reinterpret_cast<uint32_t*>(dlsym(handle_, "dlopen_testlib_taxicab_number"));
   ASSERT_DL_NOTNULL(taxicab_number);
-  EXPECT_GE(reinterpret_cast<void*>(taxicab_number), start);
-  EXPECT_LT(reinterpret_cast<void*>(taxicab_number), reinterpret_cast<char*>(start) + kLibSize);
+  // Untag the pointer so that it can be compared with start, which will be untagged.
+  void* addr = reinterpret_cast<void*>(untag_address(taxicab_number));
+  EXPECT_GE(addr, start);
+  EXPECT_LT(addr, reinterpret_cast<char*>(start) + kLibSize);
   EXPECT_EQ(1729U, *taxicab_number);
 }
 
@@ -942,7 +942,7 @@
   const std::string lib_path = GetTestlibRoot() + "/libtest_simple.so";
 
   // create memfd
-  int memfd = syscall(__NR_memfd_create, "foobar", MFD_CLOEXEC);
+  int memfd = memfd_create("foobar", MFD_CLOEXEC);
   if (memfd == -1 && errno == ENOSYS) {
     return;
   }
diff --git a/tests/elftls_dl_test.cpp b/tests/elftls_dl_test.cpp
index 6d88880..012aad7 100644
--- a/tests/elftls_dl_test.cpp
+++ b/tests/elftls_dl_test.cpp
@@ -28,6 +28,7 @@
 
 #include <dlfcn.h>
 #include <gtest/gtest.h>
+#include <link.h>
 
 #include <thread>
 
@@ -335,3 +336,58 @@
   ASSERT_STREQ(nullptr, info.dli_sname);
   ASSERT_EQ(nullptr, info.dli_saddr);
 }
+
+TEST(elftls_dl, dl_iterate_phdr) {
+  void* lib = dlopen("libtest_elftls_dynamic.so", RTLD_LOCAL | RTLD_NOW);
+
+  auto get_var_addr = reinterpret_cast<void*(*)()>(dlsym(lib, "get_large_tls_var_addr"));
+  ASSERT_NE(nullptr, get_var_addr);
+
+  struct TlsInfo {
+    bool found;
+    size_t modid;
+    void* data;
+    size_t memsz;
+  };
+
+  auto get_tls_info = []() {
+    auto callback = [](dl_phdr_info* info, size_t, void* data) {
+      TlsInfo& tls_info = *static_cast<TlsInfo*>(data);
+
+      // This test is also run with glibc, where dlpi_name may have relative path components, so
+      // examine just the basename when searching for the library.
+      if (strcmp(basename(info->dlpi_name), "libtest_elftls_dynamic.so") != 0) return 0;
+
+      tls_info.found = true;
+      tls_info.modid = info->dlpi_tls_modid;
+      tls_info.data = info->dlpi_tls_data;
+      for (ElfW(Half) i = 0; i < info->dlpi_phnum; ++i) {
+        if (info->dlpi_phdr[i].p_type == PT_TLS) {
+          tls_info.memsz = info->dlpi_phdr[i].p_memsz;
+        }
+      }
+      EXPECT_NE(static_cast<size_t>(0), tls_info.memsz);
+      return 1;
+    };
+
+    TlsInfo result {};
+    dl_iterate_phdr(callback, &result);
+    return result;
+  };
+
+  // The executable has a TLS segment, so it will use module ID #1, and the DSO's ID will be larger
+  // than 1. Initially, the data field is nullptr, because this thread's instance hasn't been
+  // allocated yet.
+  TlsInfo tls_info = get_tls_info();
+  ASSERT_TRUE(tls_info.found);
+  ASSERT_GT(tls_info.modid, static_cast<size_t>(1));
+  ASSERT_EQ(nullptr, tls_info.data);
+
+  void* var_addr = get_var_addr();
+
+  // Verify that dl_iterate_phdr returns a range of memory covering the allocated TLS variable.
+  tls_info = get_tls_info();
+  ASSERT_TRUE(tls_info.found);
+  ASSERT_GE(var_addr, tls_info.data);
+  ASSERT_LT(var_addr, static_cast<char*>(tls_info.data) + tls_info.memsz);
+}
diff --git a/tests/eventfd_test.cpp b/tests/eventfd_test.cpp
index 68d9192..3c303c2 100644
--- a/tests/eventfd_test.cpp
+++ b/tests/eventfd_test.cpp
@@ -21,14 +21,16 @@
 
 #include <sys/eventfd.h>
 
+#include "utils.h"
+
 TEST(eventfd, smoke) {
-  unsigned int initial_value = 2;
-  int fd = eventfd(initial_value, O_NONBLOCK);
-  ASSERT_NE(fd, -1);
+  constexpr unsigned int kInitialValue = 2;
+  int fd = eventfd(kInitialValue, EFD_NONBLOCK);
+  ASSERT_NE(-1, fd);
 
   eventfd_t value = 123;
   ASSERT_EQ(0, eventfd_read(fd, &value));
-  ASSERT_EQ(initial_value, value);
+  ASSERT_EQ(kInitialValue, value);
 
   // Reading clears the counter.
   ASSERT_EQ(-1, eventfd_read(fd, &value));
@@ -44,3 +46,49 @@
 
   close(fd);
 }
+
+TEST(eventfd, cloexec) {
+  constexpr unsigned int kInitialValue = 2;
+  int fd = eventfd(kInitialValue, EFD_CLOEXEC);
+  ASSERT_NE(-1, fd);
+  AssertCloseOnExec(fd, true);
+
+  eventfd_t value = 123;
+  ASSERT_EQ(0, eventfd_read(fd, &value));
+  ASSERT_EQ(kInitialValue, value);
+
+  close(fd);
+
+  fd = eventfd(kInitialValue, EFD_NONBLOCK | EFD_CLOEXEC);
+  ASSERT_NE(-1, fd);
+  AssertCloseOnExec(fd, true);
+
+  value = 123;
+  ASSERT_EQ(0, eventfd_read(fd, &value));
+  ASSERT_EQ(kInitialValue, value);
+
+  close(fd);
+}
+
+TEST(eventfd, semaphore) {
+  int fd = eventfd(3, EFD_NONBLOCK | EFD_SEMAPHORE);
+  ASSERT_NE(-1, fd);
+
+  eventfd_t value = 123;
+  ASSERT_EQ(0, eventfd_read(fd, &value));
+  ASSERT_EQ(1U, value);
+
+  value = 123;
+  ASSERT_EQ(0, eventfd_read(fd, &value));
+  ASSERT_EQ(1U, value);
+
+  value = 123;
+  ASSERT_EQ(0, eventfd_read(fd, &value));
+  ASSERT_EQ(1U, value);
+
+  // The counter is cleared after the initial value decrements to 0.
+  ASSERT_EQ(-1, eventfd_read(fd, &value));
+  ASSERT_EQ(EAGAIN, errno);
+
+  close(fd);
+}
diff --git a/tests/leak_test.cpp b/tests/leak_test.cpp
index 6005209..3cc1a0a 100644
--- a/tests/leak_test.cpp
+++ b/tests/leak_test.cpp
@@ -17,6 +17,7 @@
 #include <err.h>
 #include <inttypes.h>
 #include <pthread.h>
+#include <sched.h>
 #include <stdio.h>
 #include <string.h>
 #include <sys/mman.h>
@@ -30,26 +31,28 @@
 #include <vector>
 
 #include <android-base/macros.h>
+#include <android-base/threads.h>
 
 #include "utils.h"
 
 using namespace std::chrono_literals;
 
-static void WaitUntilAllExited(pid_t* pids, size_t pid_count) {
+static void WaitUntilAllThreadsExited(pid_t* tids, size_t tid_count) {
   // Wait until all children have exited.
   bool alive = true;
   while (alive) {
     alive = false;
-    for (size_t i = 0; i < pid_count; ++i) {
-      if (pids[i] != 0) {
-        if (kill(pids[i], 0) == 0) {
+    for (size_t i = 0; i < tid_count; ++i) {
+      if (tids[i] != 0) {
+        if (tgkill(getpid(), tids[i], 0) == 0) {
           alive = true;
         } else {
           EXPECT_EQ(errno, ESRCH);
-          pids[i] = 0;  // Skip in next loop.
+          tids[i] = 0;  // Skip in next loop.
         }
       }
     }
+    sched_yield();
   }
 }
 
@@ -155,7 +158,7 @@
     pthread_barrier_wait(&barrier);
     ASSERT_EQ(pthread_barrier_destroy(&barrier), 0);
 
-    WaitUntilAllExited(tids, arraysize(tids));
+    WaitUntilAllThreadsExited(tids, threads_count);
 
     // A native bridge implementation might need a warm up pass to reach a steady state.
     // http://b/37920774.
diff --git a/tests/libs/segment_gap_outer.lds b/tests/libs/segment_gap_outer.lds
index f326aab..0f175af 100644
--- a/tests/libs/segment_gap_outer.lds
+++ b/tests/libs/segment_gap_outer.lds
@@ -1,15 +1,14 @@
 SECTIONS {
-  # This starts off fairly normal: rodata, text, data, relro, bss with
+  # This starts off fairly normal: rodata, text, dynamic, data, bss with
   # appropriate alignment between them.
   . = SIZEOF_HEADERS;
   .rodata : {}
   . = ALIGN(0x1000);
   .text : {}
   . = ALIGN(0x1000);
+  .dynamic : {}
+  . = ALIGN(0x1000);
   .data : {}
-  . = ALIGN(0x1000);
-  .data.rel.ro : {}
-  . = ALIGN(0x1000);
   .bss : {}
 
   # Now create the gap. We need a text segment first to prevent the linker from
@@ -22,6 +21,6 @@
   # Place end_of_gap at the end of the gap.
   . = 0x1000000;
   .bss.end_of_gap : {
-    *(.bss.end_of_gap);
+    *(.bss.*end_of_gap*);
   }
 }
diff --git a/tests/link_test.cpp b/tests/link_test.cpp
index cf5fc0b..75bb4d6 100644
--- a/tests/link_test.cpp
+++ b/tests/link_test.cpp
@@ -28,6 +28,7 @@
 
 #include <gtest/gtest.h>
 
+#include <dlfcn.h>
 #include <link.h>
 #if __has_include(<sys/auxv.h>)
 #include <sys/auxv.h>
@@ -80,6 +81,52 @@
   ASSERT_EQ(0, dl_iterate_phdr(Functor::Callback, &f));
 }
 
+// Verify that the module load/unload counters from dl_iterate_phdr are incremented.
+TEST(link, dl_iterate_phdr_counters) {
+  struct Counters {
+    bool inited = false;
+    uint64_t adds = 0;
+    uint64_t subs = 0;
+  };
+
+  auto get_adds_subs = []() {
+    auto callback = [](dl_phdr_info* info, size_t size, void* data) {
+      Counters& counters = *static_cast<Counters*>(data);
+      EXPECT_GE(size, sizeof(dl_phdr_info));
+      if (!counters.inited) {
+        counters.inited = true;
+        counters.adds = info->dlpi_adds;
+        counters.subs = info->dlpi_subs;
+      } else {
+        // The counters have the same value for each module.
+        EXPECT_EQ(counters.adds, info->dlpi_adds);
+        EXPECT_EQ(counters.subs, info->dlpi_subs);
+      }
+      return 0;
+    };
+
+    Counters counters {};
+    EXPECT_EQ(0, dl_iterate_phdr(callback, &counters));
+    EXPECT_TRUE(counters.inited);
+    return counters;
+  };
+
+  // dlopen increments the 'adds' counter.
+  const auto before_dlopen = get_adds_subs();
+  void* const handle = dlopen("libtest_empty.so", RTLD_NOW);
+  ASSERT_NE(nullptr, handle);
+  const auto after_dlopen = get_adds_subs();
+  ASSERT_LT(before_dlopen.adds, after_dlopen.adds);
+  ASSERT_EQ(before_dlopen.subs, after_dlopen.subs);
+
+  // dlclose increments the 'subs' counter.
+  const auto before_dlclose = after_dlopen;
+  dlclose(handle);
+  const auto after_dlclose = get_adds_subs();
+  ASSERT_EQ(before_dlclose.adds, after_dlclose.adds);
+  ASSERT_LT(before_dlclose.subs, after_dlclose.subs);
+}
+
 struct ProgHdr {
   const ElfW(Phdr)* table;
   size_t size;
diff --git a/tests/malloc_iterate_test.cpp b/tests/malloc_iterate_test.cpp
index 9d4fe04..87ec942 100644
--- a/tests/malloc_iterate_test.cpp
+++ b/tests/malloc_iterate_test.cpp
@@ -14,16 +14,19 @@
  * limitations under the License.
  */
 
-#include <stdint.h>
-#include <stdlib.h>
-#include <time.h>
-
 #include <gtest/gtest.h>
 
 #if defined(__BIONIC__)
 
+#include <inttypes.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <time.h>
+#include <unistd.h>
+
 #include <vector>
 
+#include <async_safe/log.h>
 #include <procinfo/process_map.h>
 
 #include "utils.h"
@@ -92,15 +95,22 @@
   test_data->total_allocated_bytes = 0;
 
   // Find all of the maps that are [anon:libc_malloc].
-  ASSERT_TRUE(android::procinfo::ReadMapFile(
-      "/proc/self/maps",
-      [&](uint64_t start, uint64_t end, uint16_t, uint64_t, ino_t, const char* name) {
-        if (std::string(name) == "[anon:libc_malloc]") {
-          malloc_disable();
-          malloc_iterate(start, end - start, SavePointers, test_data);
-          malloc_enable();
-        }
-      }));
+  auto callback = [&](uint64_t start, uint64_t end, uint16_t, uint64_t, ino_t, const char* name) {
+    if (strcmp(name, "[anon:libc_malloc]") == 0) {
+      malloc_iterate(start, end - start, SavePointers, test_data);
+    }
+  };
+
+  std::vector<char> buffer(64 * 1024);
+
+  // Avoid doing allocations so that the maps don't change while looking
+  // for the pointers.
+  malloc_disable();
+  bool parsed = android::procinfo::ReadMapFileAsyncSafe("/proc/self/maps", buffer.data(),
+                                                        buffer.size(), callback);
+  malloc_enable();
+
+  ASSERT_TRUE(parsed) << "Failed to parse /proc/self/maps";
 
   for (size_t i = 0; i < test_data->allocs.size(); i++) {
     EXPECT_EQ(1UL, test_data->allocs[i].count) << "Failed on size " << test_data->allocs[i].size;
@@ -180,16 +190,42 @@
   SKIP_WITH_HWASAN;
   TestDataType test_data = {};
 
-  // Find all of the maps that are not [anon:libc_malloc].
-  ASSERT_TRUE(android::procinfo::ReadMapFile(
-      "/proc/self/maps",
-      [&](uint64_t start, uint64_t end, uint16_t, uint64_t, ino_t, const char* name) {
-        if (std::string(name) != "[anon:libc_malloc]") {
-          malloc_disable();
-          malloc_iterate(start, end - start, SavePointers, &test_data);
-          malloc_enable();
+  // Only attempt to get memory data for maps that are not from the native allocator.
+  auto callback = [&](uint64_t start, uint64_t end, uint16_t, uint64_t, ino_t, const char* name) {
+    if (strcmp(name, "[anon:libc_malloc]") != 0) {
+      size_t total = test_data.total_allocated_bytes;
+      malloc_iterate(start, end - start, SavePointers, &test_data);
+      total = test_data.total_allocated_bytes - total;
+      if (total > 0) {
+        char buffer[256];
+        int len = 0;
+        if (name[0] != '\0') {
+          len = async_safe_format_buffer(buffer, sizeof(buffer), "Failed on map %s: %zu\n", name,
+                                         total);
+        } else {
+          len = async_safe_format_buffer(buffer, sizeof(buffer),
+                                         "Failed on map anon:<%" PRIx64 "-%" PRIx64 ">: %zu\n",
+                                         start, end, total);
         }
-      }));
+        if (len > 0) {
+          write(STDOUT_FILENO, buffer, len);
+        }
+      }
+    }
+  };
+
+  std::vector<char> buffer(64 * 1024);
+
+  // Need to make sure that there are no allocations while reading the
+  // maps. Otherwise, it might create a new map during this check and
+  // incorrectly think a map is empty while it actually includes real
+  // allocations.
+  malloc_disable();
+  bool parsed = android::procinfo::ReadMapFileAsyncSafe("/proc/self/maps", buffer.data(),
+                                                        buffer.size(), callback);
+  malloc_enable();
+
+  ASSERT_TRUE(parsed) << "Failed to parse /proc/self/maps";
 
   ASSERT_EQ(0UL, test_data.total_allocated_bytes);
 #else
diff --git a/tests/stdatomic_test.cpp b/tests/stdatomic_test.cpp
index a9665d1..9911d64 100644
--- a/tests/stdatomic_test.cpp
+++ b/tests/stdatomic_test.cpp
@@ -16,12 +16,9 @@
 
 #include <gtest/gtest.h>
 
-#if defined(__ANDROID__)
+// The real <stdatomic.h> checks for the availability of C++'s atomics and uses them if present. Since
+// we want to test the libc versions, we instead include <bits/stdatomic.h> where they're actually defined.
 #include <bits/stdatomic.h>
-#else
-#undef _USING_LIBCXX  //TODO(b/137876753): Remove this
-#include <stdatomic.h>
-#endif
 
 #include <pthread.h>
 #include <stdint.h>
diff --git a/tests/stdio_test.cpp b/tests/stdio_test.cpp
index 01b4dba..a0cda1b 100644
--- a/tests/stdio_test.cpp
+++ b/tests/stdio_test.cpp
@@ -19,7 +19,6 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
-#include <linux/fs.h>
 #include <math.h>
 #include <stdio.h>
 #include <sys/types.h>
@@ -34,10 +33,18 @@
 #include <vector>
 
 #include <android-base/file.h>
+#include <android-base/unique_fd.h>
 
 #include "BionicDeathTest.h"
 #include "utils.h"
 
+// This #include is actually a test too. We have to duplicate the
+// definitions of the RENAME_ constants because <linux/fs.h> also contains
+// pollution such as BLOCK_SIZE which conflicts with lots of user code.
+// Important to check that we have matching definitions.
+// There's no _MAX to test that we have all the constants, sadly.
+#include <linux/fs.h>
+
 #if defined(NOFORTIFY)
 #define STDIO_TEST stdio_nofortify
 #define STDIO_DEATHTEST stdio_nofortify_DeathTest
@@ -2610,3 +2617,77 @@
   // So we'll notice if Linux grows another constant in <linux/fs.h>...
   ASSERT_EQ(SEEK_MAX, SEEK_HOLE);
 }
+
+TEST(STDIO_TEST, rename) {
+  TemporaryDir td;
+  std::string old_path = td.path + "/old"s;
+  std::string new_path = td.path + "/new"s;
+
+  // Create the file, check it exists.
+  ASSERT_EQ(0, close(creat(old_path.c_str(), 0666)));
+  struct stat sb;
+  ASSERT_EQ(0, stat(old_path.c_str(), &sb));
+  ASSERT_EQ(-1, stat(new_path.c_str(), &sb));
+
+  // Rename and check it moved.
+  ASSERT_EQ(0, rename(old_path.c_str(), new_path.c_str()));
+  ASSERT_EQ(-1, stat(old_path.c_str(), &sb));
+  ASSERT_EQ(0, stat(new_path.c_str(), &sb));
+}
+
+TEST(STDIO_TEST, renameat) {
+  TemporaryDir td;
+  android::base::unique_fd dirfd{open(td.path, O_PATH)};
+  std::string old_path = td.path + "/old"s;
+  std::string new_path = td.path + "/new"s;
+
+  // Create the file, check it exists.
+  ASSERT_EQ(0, close(creat(old_path.c_str(), 0666)));
+  struct stat sb;
+  ASSERT_EQ(0, stat(old_path.c_str(), &sb));
+  ASSERT_EQ(-1, stat(new_path.c_str(), &sb));
+
+  // Rename and check it moved.
+  ASSERT_EQ(0, renameat(dirfd, "old", dirfd, "new"));
+  ASSERT_EQ(-1, stat(old_path.c_str(), &sb));
+  ASSERT_EQ(0, stat(new_path.c_str(), &sb));
+}
+
+TEST(STDIO_TEST, renameat2) {
+#if defined(__GLIBC__)
+  GTEST_SKIP() << "glibc doesn't have renameat2 until 2.28";
+#else
+  TemporaryDir td;
+  android::base::unique_fd dirfd{open(td.path, O_PATH)};
+  std::string old_path = td.path + "/old"s;
+  std::string new_path = td.path + "/new"s;
+
+  // Create the file, check it exists.
+  ASSERT_EQ(0, close(creat(old_path.c_str(), 0666)));
+  struct stat sb;
+  ASSERT_EQ(0, stat(old_path.c_str(), &sb));
+  ASSERT_EQ(-1, stat(new_path.c_str(), &sb));
+
+  // Rename and check it moved.
+  ASSERT_EQ(0, renameat2(dirfd, "old", dirfd, "new", 0));
+  ASSERT_EQ(-1, stat(old_path.c_str(), &sb));
+  ASSERT_EQ(0, stat(new_path.c_str(), &sb));
+
+  // After this, both "old" and "new" exist.
+  ASSERT_EQ(0, close(creat(old_path.c_str(), 0666)));
+
+  // Rename and check it moved.
+  ASSERT_EQ(-1, renameat2(dirfd, "old", dirfd, "new", RENAME_NOREPLACE));
+  ASSERT_EQ(EEXIST, errno);
+#endif
+}
+
+TEST(STDIO_TEST, renameat2_flags) {
+#if defined(__GLIBC__)
+  GTEST_SKIP() << "glibc doesn't have renameat2 until 2.28";
+#else
+ ASSERT_NE(0, RENAME_EXCHANGE);
+ ASSERT_NE(0, RENAME_NOREPLACE);
+ ASSERT_NE(0, RENAME_WHITEOUT);
+#endif
+}
diff --git a/tests/sys_mman_test.cpp b/tests/sys_mman_test.cpp
index 0b98198..e403ea5 100644
--- a/tests/sys_mman_test.cpp
+++ b/tests/sys_mman_test.cpp
@@ -230,7 +230,10 @@
 TEST(sys_mman, mremap_PTRDIFF_MAX) {
   void* map = mmap(nullptr, PAGE_SIZE, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
   ASSERT_NE(MAP_FAILED, map);
+
   ASSERT_EQ(MAP_FAILED, mremap(map, PAGE_SIZE, kHuge, MREMAP_MAYMOVE));
+
+  ASSERT_EQ(0, munmap(map, PAGE_SIZE));
 }
 
 TEST(sys_mman, mmap_bug_27265969) {
@@ -239,3 +242,61 @@
   // Some kernels had bugs that would cause segfaults here...
   __builtin___clear_cache(base, base + (PAGE_SIZE * 2));
 }
+
+TEST(sys_mman, mlock) {
+  void* map = mmap(nullptr, PAGE_SIZE, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+  ASSERT_NE(MAP_FAILED, map);
+
+  // Not really anything we can assert about this.
+  mlock(map, PAGE_SIZE);
+
+  ASSERT_EQ(0, munmap(map, PAGE_SIZE));
+}
+
+TEST(sys_mman, mlock2) {
+#if defined(__GLIBC__)
+  GTEST_SKIP() << "needs glibc 2.27";
+#else
+  void* map = mmap(nullptr, PAGE_SIZE, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+  ASSERT_NE(MAP_FAILED, map);
+
+  // Not really anything we can assert about this.
+  mlock2(map, PAGE_SIZE, MLOCK_ONFAULT);
+
+  ASSERT_EQ(0, munmap(map, PAGE_SIZE));
+#endif
+}
+
+TEST(sys_mman, memfd_create) {
+#if defined(__GLIBC__)
+  GTEST_SKIP() << "needs glibc 2.27";
+#else
+  // Is the MFD_CLOEXEC flag obeyed?
+  errno = 0;
+  int fd = memfd_create("doesn't matter", 0);
+  if (fd == -1) {
+    ASSERT_EQ(ENOSYS, errno);
+    GTEST_SKIP() << "no memfd_create available";
+  }
+  int f = fcntl(fd, F_GETFD);
+  ASSERT_NE(-1, f);
+  ASSERT_FALSE(f & FD_CLOEXEC);
+  close(fd);
+
+  errno = 0;
+  fd = memfd_create("doesn't matter", MFD_CLOEXEC);
+  f = fcntl(fd, F_GETFD);
+  ASSERT_NE(-1, f);
+  ASSERT_TRUE(f & FD_CLOEXEC);
+
+  // Can we read and write?
+  std::string expected("hello, world!");
+  ASSERT_TRUE(android::base::WriteStringToFd(expected, fd));
+  ASSERT_EQ(0, lseek(fd, 0, SEEK_SET));
+  std::string actual;
+  ASSERT_TRUE(android::base::ReadFdToString(fd, &actual));
+  ASSERT_EQ(expected, actual);
+
+  close(fd);
+#endif
+}
diff --git a/tools/versioner/src/Arch.h b/tools/versioner/src/Arch.h
index 16fa265..e4bbcc4 100644
--- a/tools/versioner/src/Arch.h
+++ b/tools/versioner/src/Arch.h
@@ -138,7 +138,9 @@
   { Arch::x86_64, "x86_64-linux-android" },
 };
 
-static const std::set<int> default_levels = { 14, 15, 16, 17, 18, 19, 21, 23, 24, 25, 26, 27, 28, 29 };
+static const std::set<int> default_levels = {
+  14, 15, 16, 17, 18, 19, 21, 23, 24, 25, 26, 27, 28, 29, 30,
+};
 
 static const ArchMap<int> arch_min_api = {
   { Arch::arm, 9 },
@@ -165,4 +167,5 @@
   {"O-MR1", 27},
   {"P", 28},
   {"Q", 29},
+  {"R", 30},
 };
diff --git a/tools/versioner/src/Driver.cpp b/tools/versioner/src/Driver.cpp
index 3927480..d2c50a9 100644
--- a/tools/versioner/src/Driver.cpp
+++ b/tools/versioner/src/Driver.cpp
@@ -258,7 +258,7 @@
 
   Compiler.setInvocation(std::move(invocation));
   Compiler.setDiagnostics(diags.get());
-  Compiler.setVirtualFileSystem(vfs);
+  Compiler.createFileManager(vfs);
 
   VersionerASTAction versioner_action(header_database, type);
   if (!Compiler.ExecuteAction(versioner_action)) {
diff --git a/tools/versioner/src/SymbolFileParser.cpp b/tools/versioner/src/SymbolFileParser.cpp
index c312b48..1b4adae 100644
--- a/tools/versioner/src/SymbolFileParser.cpp
+++ b/tools/versioner/src/SymbolFileParser.cpp
@@ -266,19 +266,23 @@
     if (!api_level.empty()) {
       // If an api-level tag is specified, it must be an exact match (mainly
       // for versioner unit tests).
-      return compilation_type.api_level == decodeApiLevelValue(api_level);
+      return compilation_type.api_level == parseApiLevelValue(api_level);
     }
 
-    return compilation_type.api_level >= decodeApiLevelValue(intro);
+    return compilation_type.api_level >= parseApiLevelValue(intro);
   }
 
-  // Extract and decode the integer API level from api-level or introduced tags.
-  static int decodeApiLevelValue(const std::string& tag) {
+  // Parse the integer API level from api-level or introduced tags.
+  int parseApiLevelValue(const std::string& tag) const {
     std::string api_level = tag.substr(tag.find('=') + 1);
     auto it = api_codename_map.find(api_level);
     if (it != api_codename_map.end()) {
       return it->second;
     }
+    if (api_level.find_first_not_of("0123456789") != std::string::npos) {
+      errx(1, "%s:%zu: error: unknown API level codename specified: \"%s\"",
+           file_path.c_str(), curr_line_num, tag.c_str());
+    }
     return std::stoi(api_level);
   }