1 /*
   2  * Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * Copyright (c) 2014, Red Hat Inc. All rights reserved.
   4  * Copyright (c) 2015, Linaro Ltd. All rights reserved.
   5  * Copyright (c) 2015-2018, Azul Systems, Inc. All rights reserved.
   6  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   7  *
   8  * This code is free software; you can redistribute it and/or modify it
   9  * under the terms of the GNU General Public License version 2 only, as
  10  * published by the Free Software Foundation.
  11  *
  12  * This code is distributed in the hope that it will be useful, but WITHOUT
  13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  14  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  15  * version 2 for more details (a copy is included in the LICENSE file that
  16  * accompanied this code).
  17  *
  18  * You should have received a copy of the GNU General Public License version
  19  * 2 along with this work; if not, write to the Free Software Foundation,
  20  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  21  *
  22  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  23  * or visit www.oracle.com if you need additional information or have any
  24  * questions.
  25  *
  26  */
  27 
  28 #include "precompiled.hpp"
  29 #include "runtime/deoptimization.hpp"
  30 #include "runtime/frame.inline.hpp"
  31 #include "runtime/stubRoutines.hpp"
  32 #include "runtime/thread.inline.hpp"
  33 #include "utilities/globalDefinitions.hpp"
  34 
  35 // Implementation of the platform-specific part of StubRoutines - for
  36 // a description of how to extend it, see the stubRoutines.hpp file.
  37 
  38 #ifdef COMPILER2
  39 address StubRoutines::aarch32::_idiv_entry = NULL;
  40 address StubRoutines::aarch32::_irem_entry = NULL;
  41 address StubRoutines::aarch32::_partial_subtype_check = NULL;
  42 address StubRoutines::aarch32::_string_compress_neon = NULL;
  43 address StubRoutines::aarch32::_string_inflate_neon = NULL;
  44 #endif
  45 /**
  46  *  crc_table[] from jdk/src/share/native/java/util/zip/zlib-1.2.5/crc32.h
  47  */
  48 juint StubRoutines::aarch32::_crc_table[]
  49                    ATTRIBUTE_ALIGNED(4096) =
  50 {
  51     // Table 0
  52     0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
  53     0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
  54     0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
  55     0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
  56     0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
  57     0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
  58     0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
  59     0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
  60     0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
  61     0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
  62     0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
  63     0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
  64     0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
  65     0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
  66     0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
  67     0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
  68     0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
  69     0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
  70     0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
  71     0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
  72     0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
  73     0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
  74     0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
  75     0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
  76     0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
  77     0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
  78     0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
  79     0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
  80     0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
  81     0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
  82     0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
  83     0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
  84     0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
  85     0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
  86     0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
  87     0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
  88     0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
  89     0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
  90     0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
  91     0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
  92     0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
  93     0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
  94     0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
  95     0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
  96     0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
  97     0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
  98     0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
  99     0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
 100     0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
 101     0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
 102     0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
 103     0x2d02ef8dUL,
 104 
 105     // Table 1
 106     0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
 107     0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
 108     0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
 109     0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
 110     0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
 111     0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
 112     0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
 113     0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
 114     0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
 115     0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
 116     0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
 117     0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
 118     0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
 119     0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
 120     0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
 121     0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
 122     0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
 123     0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
 124     0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
 125     0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
 126     0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
 127     0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
 128     0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
 129     0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
 130     0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
 131     0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
 132     0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
 133     0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
 134     0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
 135     0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
 136     0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
 137     0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
 138     0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
 139     0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
 140     0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
 141     0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
 142     0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
 143     0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
 144     0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
 145     0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
 146     0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
 147     0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
 148     0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
 149     0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
 150     0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
 151     0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
 152     0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
 153     0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
 154     0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
 155     0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
 156     0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
 157     0x9324fd72UL,
 158 
 159     // Table 2
 160     0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
 161     0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
 162     0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
 163     0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
 164     0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
 165     0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
 166     0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
 167     0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
 168     0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
 169     0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
 170     0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
 171     0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
 172     0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
 173     0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
 174     0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
 175     0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
 176     0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
 177     0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
 178     0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
 179     0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
 180     0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
 181     0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
 182     0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
 183     0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
 184     0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
 185     0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
 186     0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
 187     0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
 188     0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
 189     0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
 190     0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
 191     0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
 192     0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
 193     0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
 194     0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
 195     0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
 196     0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
 197     0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
 198     0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
 199     0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
 200     0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
 201     0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
 202     0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
 203     0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
 204     0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
 205     0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
 206     0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
 207     0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
 208     0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
 209     0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
 210     0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
 211     0xbe9834edUL,
 212 
 213     // Table 3
 214     0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
 215     0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
 216     0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
 217     0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
 218     0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
 219     0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
 220     0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
 221     0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
 222     0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
 223     0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
 224     0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
 225     0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
 226     0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
 227     0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
 228     0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
 229     0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
 230     0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
 231     0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
 232     0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
 233     0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
 234     0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
 235     0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
 236     0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
 237     0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
 238     0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
 239     0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
 240     0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
 241     0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
 242     0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
 243     0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
 244     0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
 245     0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
 246     0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
 247     0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
 248     0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
 249     0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
 250     0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
 251     0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
 252     0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
 253     0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
 254     0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
 255     0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
 256     0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
 257     0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
 258     0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
 259     0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
 260     0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
 261     0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
 262     0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
 263     0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
 264     0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
 265     0xde0506f1UL,
 266     // Constants for Neon CRC32 implementation, 128-bit operation
 267     // k3 = 0xba8ccbe8 = x^160 mod poly - bit reversed
 268     // k4 = 0xa06a2517 = x^128 mod poly - bit reversed
 269     // poly = x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + x^0 + 0
 270     0xba8ccbe8, 0xa06a2517,     // k4:k3
 271     0x8cbae8cb, 0x6aa01725,     // byte swap
 272     0xcbe8ba8c, 0x2517a06a,     // word swap
 273     0xe8cb8cba, 0x17256aa0,     // byte swap of word swap
 274 };
 275 
 276 /**
 277  * CRC32C constants lookup table
 278  */
 279 
 280 juint StubRoutines::aarch32::_crc32c_table[] =
 281 {
 282     // Table 0
 283     0x00000000UL, 0xf26b8303UL, 0xe13b70f7UL, 0x1350f3f4UL, 0xc79a971fUL,
 284     0x35f1141cUL, 0x26a1e7e8UL, 0xd4ca64ebUL, 0x8ad958cfUL, 0x78b2dbccUL,
 285     0x6be22838UL, 0x9989ab3bUL, 0x4d43cfd0UL, 0xbf284cd3UL, 0xac78bf27UL,
 286     0x5e133c24UL, 0x105ec76fUL, 0xe235446cUL, 0xf165b798UL, 0x030e349bUL,
 287     0xd7c45070UL, 0x25afd373UL, 0x36ff2087UL, 0xc494a384UL, 0x9a879fa0UL,
 288     0x68ec1ca3UL, 0x7bbcef57UL, 0x89d76c54UL, 0x5d1d08bfUL, 0xaf768bbcUL,
 289     0xbc267848UL, 0x4e4dfb4bUL, 0x20bd8edeUL, 0xd2d60dddUL, 0xc186fe29UL,
 290     0x33ed7d2aUL, 0xe72719c1UL, 0x154c9ac2UL, 0x061c6936UL, 0xf477ea35UL,
 291     0xaa64d611UL, 0x580f5512UL, 0x4b5fa6e6UL, 0xb93425e5UL, 0x6dfe410eUL,
 292     0x9f95c20dUL, 0x8cc531f9UL, 0x7eaeb2faUL, 0x30e349b1UL, 0xc288cab2UL,
 293     0xd1d83946UL, 0x23b3ba45UL, 0xf779deaeUL, 0x05125dadUL, 0x1642ae59UL,
 294     0xe4292d5aUL, 0xba3a117eUL, 0x4851927dUL, 0x5b016189UL, 0xa96ae28aUL,
 295     0x7da08661UL, 0x8fcb0562UL, 0x9c9bf696UL, 0x6ef07595UL, 0x417b1dbcUL,
 296     0xb3109ebfUL, 0xa0406d4bUL, 0x522bee48UL, 0x86e18aa3UL, 0x748a09a0UL,
 297     0x67dafa54UL, 0x95b17957UL, 0xcba24573UL, 0x39c9c670UL, 0x2a993584UL,
 298     0xd8f2b687UL, 0x0c38d26cUL, 0xfe53516fUL, 0xed03a29bUL, 0x1f682198UL,
 299     0x5125dad3UL, 0xa34e59d0UL, 0xb01eaa24UL, 0x42752927UL, 0x96bf4dccUL,
 300     0x64d4cecfUL, 0x77843d3bUL, 0x85efbe38UL, 0xdbfc821cUL, 0x2997011fUL,
 301     0x3ac7f2ebUL, 0xc8ac71e8UL, 0x1c661503UL, 0xee0d9600UL, 0xfd5d65f4UL,
 302     0x0f36e6f7UL, 0x61c69362UL, 0x93ad1061UL, 0x80fde395UL, 0x72966096UL,
 303     0xa65c047dUL, 0x5437877eUL, 0x4767748aUL, 0xb50cf789UL, 0xeb1fcbadUL,
 304     0x197448aeUL, 0x0a24bb5aUL, 0xf84f3859UL, 0x2c855cb2UL, 0xdeeedfb1UL,
 305     0xcdbe2c45UL, 0x3fd5af46UL, 0x7198540dUL, 0x83f3d70eUL, 0x90a324faUL,
 306     0x62c8a7f9UL, 0xb602c312UL, 0x44694011UL, 0x5739b3e5UL, 0xa55230e6UL,
 307     0xfb410cc2UL, 0x092a8fc1UL, 0x1a7a7c35UL, 0xe811ff36UL, 0x3cdb9bddUL,
 308     0xceb018deUL, 0xdde0eb2aUL, 0x2f8b6829UL, 0x82f63b78UL, 0x709db87bUL,
 309     0x63cd4b8fUL, 0x91a6c88cUL, 0x456cac67UL, 0xb7072f64UL, 0xa457dc90UL,
 310     0x563c5f93UL, 0x082f63b7UL, 0xfa44e0b4UL, 0xe9141340UL, 0x1b7f9043UL,
 311     0xcfb5f4a8UL, 0x3dde77abUL, 0x2e8e845fUL, 0xdce5075cUL, 0x92a8fc17UL,
 312     0x60c37f14UL, 0x73938ce0UL, 0x81f80fe3UL, 0x55326b08UL, 0xa759e80bUL,
 313     0xb4091bffUL, 0x466298fcUL, 0x1871a4d8UL, 0xea1a27dbUL, 0xf94ad42fUL,
 314     0x0b21572cUL, 0xdfeb33c7UL, 0x2d80b0c4UL, 0x3ed04330UL, 0xccbbc033UL,
 315     0xa24bb5a6UL, 0x502036a5UL, 0x4370c551UL, 0xb11b4652UL, 0x65d122b9UL,
 316     0x97baa1baUL, 0x84ea524eUL, 0x7681d14dUL, 0x2892ed69UL, 0xdaf96e6aUL,
 317     0xc9a99d9eUL, 0x3bc21e9dUL, 0xef087a76UL, 0x1d63f975UL, 0x0e330a81UL,
 318     0xfc588982UL, 0xb21572c9UL, 0x407ef1caUL, 0x532e023eUL, 0xa145813dUL,
 319     0x758fe5d6UL, 0x87e466d5UL, 0x94b49521UL, 0x66df1622UL, 0x38cc2a06UL,
 320     0xcaa7a905UL, 0xd9f75af1UL, 0x2b9cd9f2UL, 0xff56bd19UL, 0x0d3d3e1aUL,
 321     0x1e6dcdeeUL, 0xec064eedUL, 0xc38d26c4UL, 0x31e6a5c7UL, 0x22b65633UL,
 322     0xd0ddd530UL, 0x0417b1dbUL, 0xf67c32d8UL, 0xe52cc12cUL, 0x1747422fUL,
 323     0x49547e0bUL, 0xbb3ffd08UL, 0xa86f0efcUL, 0x5a048dffUL, 0x8ecee914UL,
 324     0x7ca56a17UL, 0x6ff599e3UL, 0x9d9e1ae0UL, 0xd3d3e1abUL, 0x21b862a8UL,
 325     0x32e8915cUL, 0xc083125fUL, 0x144976b4UL, 0xe622f5b7UL, 0xf5720643UL,
 326     0x07198540UL, 0x590ab964UL, 0xab613a67UL, 0xb831c993UL, 0x4a5a4a90UL,
 327     0x9e902e7bUL, 0x6cfbad78UL, 0x7fab5e8cUL, 0x8dc0dd8fUL, 0xe330a81aUL,
 328     0x115b2b19UL, 0x020bd8edUL, 0xf0605beeUL, 0x24aa3f05UL, 0xd6c1bc06UL,
 329     0xc5914ff2UL, 0x37faccf1UL, 0x69e9f0d5UL, 0x9b8273d6UL, 0x88d28022UL,
 330     0x7ab90321UL, 0xae7367caUL, 0x5c18e4c9UL, 0x4f48173dUL, 0xbd23943eUL,
 331     0xf36e6f75UL, 0x0105ec76UL, 0x12551f82UL, 0xe03e9c81UL, 0x34f4f86aUL,
 332     0xc69f7b69UL, 0xd5cf889dUL, 0x27a40b9eUL, 0x79b737baUL, 0x8bdcb4b9UL,
 333     0x988c474dUL, 0x6ae7c44eUL, 0xbe2da0a5UL, 0x4c4623a6UL, 0x5f16d052UL,
 334     0xad7d5351UL,
 335 
 336     // Table 1
 337     0x00000000UL, 0x13a29877UL, 0x274530eeUL, 0x34e7a899UL, 0x4e8a61dcUL,
 338     0x5d28f9abUL, 0x69cf5132UL, 0x7a6dc945UL, 0x9d14c3b8UL, 0x8eb65bcfUL,
 339     0xba51f356UL, 0xa9f36b21UL, 0xd39ea264UL, 0xc03c3a13UL, 0xf4db928aUL,
 340     0xe7790afdUL, 0x3fc5f181UL, 0x2c6769f6UL, 0x1880c16fUL, 0x0b225918UL,
 341     0x714f905dUL, 0x62ed082aUL, 0x560aa0b3UL, 0x45a838c4UL, 0xa2d13239UL,
 342     0xb173aa4eUL, 0x859402d7UL, 0x96369aa0UL, 0xec5b53e5UL, 0xfff9cb92UL,
 343     0xcb1e630bUL, 0xd8bcfb7cUL, 0x7f8be302UL, 0x6c297b75UL, 0x58ced3ecUL,
 344     0x4b6c4b9bUL, 0x310182deUL, 0x22a31aa9UL, 0x1644b230UL, 0x05e62a47UL,
 345     0xe29f20baUL, 0xf13db8cdUL, 0xc5da1054UL, 0xd6788823UL, 0xac154166UL,
 346     0xbfb7d911UL, 0x8b507188UL, 0x98f2e9ffUL, 0x404e1283UL, 0x53ec8af4UL,
 347     0x670b226dUL, 0x74a9ba1aUL, 0x0ec4735fUL, 0x1d66eb28UL, 0x298143b1UL,
 348     0x3a23dbc6UL, 0xdd5ad13bUL, 0xcef8494cUL, 0xfa1fe1d5UL, 0xe9bd79a2UL,
 349     0x93d0b0e7UL, 0x80722890UL, 0xb4958009UL, 0xa737187eUL, 0xff17c604UL,
 350     0xecb55e73UL, 0xd852f6eaUL, 0xcbf06e9dUL, 0xb19da7d8UL, 0xa23f3fafUL,
 351     0x96d89736UL, 0x857a0f41UL, 0x620305bcUL, 0x71a19dcbUL, 0x45463552UL,
 352     0x56e4ad25UL, 0x2c896460UL, 0x3f2bfc17UL, 0x0bcc548eUL, 0x186eccf9UL,
 353     0xc0d23785UL, 0xd370aff2UL, 0xe797076bUL, 0xf4359f1cUL, 0x8e585659UL,
 354     0x9dface2eUL, 0xa91d66b7UL, 0xbabffec0UL, 0x5dc6f43dUL, 0x4e646c4aUL,
 355     0x7a83c4d3UL, 0x69215ca4UL, 0x134c95e1UL, 0x00ee0d96UL, 0x3409a50fUL,
 356     0x27ab3d78UL, 0x809c2506UL, 0x933ebd71UL, 0xa7d915e8UL, 0xb47b8d9fUL,
 357     0xce1644daUL, 0xddb4dcadUL, 0xe9537434UL, 0xfaf1ec43UL, 0x1d88e6beUL,
 358     0x0e2a7ec9UL, 0x3acdd650UL, 0x296f4e27UL, 0x53028762UL, 0x40a01f15UL,
 359     0x7447b78cUL, 0x67e52ffbUL, 0xbf59d487UL, 0xacfb4cf0UL, 0x981ce469UL,
 360     0x8bbe7c1eUL, 0xf1d3b55bUL, 0xe2712d2cUL, 0xd69685b5UL, 0xc5341dc2UL,
 361     0x224d173fUL, 0x31ef8f48UL, 0x050827d1UL, 0x16aabfa6UL, 0x6cc776e3UL,
 362     0x7f65ee94UL, 0x4b82460dUL, 0x5820de7aUL, 0xfbc3faf9UL, 0xe861628eUL,
 363     0xdc86ca17UL, 0xcf245260UL, 0xb5499b25UL, 0xa6eb0352UL, 0x920cabcbUL,
 364     0x81ae33bcUL, 0x66d73941UL, 0x7575a136UL, 0x419209afUL, 0x523091d8UL,
 365     0x285d589dUL, 0x3bffc0eaUL, 0x0f186873UL, 0x1cbaf004UL, 0xc4060b78UL,
 366     0xd7a4930fUL, 0xe3433b96UL, 0xf0e1a3e1UL, 0x8a8c6aa4UL, 0x992ef2d3UL,
 367     0xadc95a4aUL, 0xbe6bc23dUL, 0x5912c8c0UL, 0x4ab050b7UL, 0x7e57f82eUL,
 368     0x6df56059UL, 0x1798a91cUL, 0x043a316bUL, 0x30dd99f2UL, 0x237f0185UL,
 369     0x844819fbUL, 0x97ea818cUL, 0xa30d2915UL, 0xb0afb162UL, 0xcac27827UL,
 370     0xd960e050UL, 0xed8748c9UL, 0xfe25d0beUL, 0x195cda43UL, 0x0afe4234UL,
 371     0x3e19eaadUL, 0x2dbb72daUL, 0x57d6bb9fUL, 0x447423e8UL, 0x70938b71UL,
 372     0x63311306UL, 0xbb8de87aUL, 0xa82f700dUL, 0x9cc8d894UL, 0x8f6a40e3UL,
 373     0xf50789a6UL, 0xe6a511d1UL, 0xd242b948UL, 0xc1e0213fUL, 0x26992bc2UL,
 374     0x353bb3b5UL, 0x01dc1b2cUL, 0x127e835bUL, 0x68134a1eUL, 0x7bb1d269UL,
 375     0x4f567af0UL, 0x5cf4e287UL, 0x04d43cfdUL, 0x1776a48aUL, 0x23910c13UL,
 376     0x30339464UL, 0x4a5e5d21UL, 0x59fcc556UL, 0x6d1b6dcfUL, 0x7eb9f5b8UL,
 377     0x99c0ff45UL, 0x8a626732UL, 0xbe85cfabUL, 0xad2757dcUL, 0xd74a9e99UL,
 378     0xc4e806eeUL, 0xf00fae77UL, 0xe3ad3600UL, 0x3b11cd7cUL, 0x28b3550bUL,
 379     0x1c54fd92UL, 0x0ff665e5UL, 0x759baca0UL, 0x663934d7UL, 0x52de9c4eUL,
 380     0x417c0439UL, 0xa6050ec4UL, 0xb5a796b3UL, 0x81403e2aUL, 0x92e2a65dUL,
 381     0xe88f6f18UL, 0xfb2df76fUL, 0xcfca5ff6UL, 0xdc68c781UL, 0x7b5fdfffUL,
 382     0x68fd4788UL, 0x5c1aef11UL, 0x4fb87766UL, 0x35d5be23UL, 0x26772654UL,
 383     0x12908ecdUL, 0x013216baUL, 0xe64b1c47UL, 0xf5e98430UL, 0xc10e2ca9UL,
 384     0xd2acb4deUL, 0xa8c17d9bUL, 0xbb63e5ecUL, 0x8f844d75UL, 0x9c26d502UL,
 385     0x449a2e7eUL, 0x5738b609UL, 0x63df1e90UL, 0x707d86e7UL, 0x0a104fa2UL,
 386     0x19b2d7d5UL, 0x2d557f4cUL, 0x3ef7e73bUL, 0xd98eedc6UL, 0xca2c75b1UL,
 387     0xfecbdd28UL, 0xed69455fUL, 0x97048c1aUL, 0x84a6146dUL, 0xb041bcf4UL,
 388     0xa3e32483UL,
 389 
 390     // Table 2
 391     0x00000000UL, 0xa541927eUL, 0x4f6f520dUL, 0xea2ec073UL, 0x9edea41aUL,
 392     0x3b9f3664UL, 0xd1b1f617UL, 0x74f06469UL, 0x38513ec5UL, 0x9d10acbbUL,
 393     0x773e6cc8UL, 0xd27ffeb6UL, 0xa68f9adfUL, 0x03ce08a1UL, 0xe9e0c8d2UL,
 394     0x4ca15aacUL, 0x70a27d8aUL, 0xd5e3eff4UL, 0x3fcd2f87UL, 0x9a8cbdf9UL,
 395     0xee7cd990UL, 0x4b3d4beeUL, 0xa1138b9dUL, 0x045219e3UL, 0x48f3434fUL,
 396     0xedb2d131UL, 0x079c1142UL, 0xa2dd833cUL, 0xd62de755UL, 0x736c752bUL,
 397     0x9942b558UL, 0x3c032726UL, 0xe144fb14UL, 0x4405696aUL, 0xae2ba919UL,
 398     0x0b6a3b67UL, 0x7f9a5f0eUL, 0xdadbcd70UL, 0x30f50d03UL, 0x95b49f7dUL,
 399     0xd915c5d1UL, 0x7c5457afUL, 0x967a97dcUL, 0x333b05a2UL, 0x47cb61cbUL,
 400     0xe28af3b5UL, 0x08a433c6UL, 0xade5a1b8UL, 0x91e6869eUL, 0x34a714e0UL,
 401     0xde89d493UL, 0x7bc846edUL, 0x0f382284UL, 0xaa79b0faUL, 0x40577089UL,
 402     0xe516e2f7UL, 0xa9b7b85bUL, 0x0cf62a25UL, 0xe6d8ea56UL, 0x43997828UL,
 403     0x37691c41UL, 0x92288e3fUL, 0x78064e4cUL, 0xdd47dc32UL, 0xc76580d9UL,
 404     0x622412a7UL, 0x880ad2d4UL, 0x2d4b40aaUL, 0x59bb24c3UL, 0xfcfab6bdUL,
 405     0x16d476ceUL, 0xb395e4b0UL, 0xff34be1cUL, 0x5a752c62UL, 0xb05bec11UL,
 406     0x151a7e6fUL, 0x61ea1a06UL, 0xc4ab8878UL, 0x2e85480bUL, 0x8bc4da75UL,
 407     0xb7c7fd53UL, 0x12866f2dUL, 0xf8a8af5eUL, 0x5de93d20UL, 0x29195949UL,
 408     0x8c58cb37UL, 0x66760b44UL, 0xc337993aUL, 0x8f96c396UL, 0x2ad751e8UL,
 409     0xc0f9919bUL, 0x65b803e5UL, 0x1148678cUL, 0xb409f5f2UL, 0x5e273581UL,
 410     0xfb66a7ffUL, 0x26217bcdUL, 0x8360e9b3UL, 0x694e29c0UL, 0xcc0fbbbeUL,
 411     0xb8ffdfd7UL, 0x1dbe4da9UL, 0xf7908ddaUL, 0x52d11fa4UL, 0x1e704508UL,
 412     0xbb31d776UL, 0x511f1705UL, 0xf45e857bUL, 0x80aee112UL, 0x25ef736cUL,
 413     0xcfc1b31fUL, 0x6a802161UL, 0x56830647UL, 0xf3c29439UL, 0x19ec544aUL,
 414     0xbcadc634UL, 0xc85da25dUL, 0x6d1c3023UL, 0x8732f050UL, 0x2273622eUL,
 415     0x6ed23882UL, 0xcb93aafcUL, 0x21bd6a8fUL, 0x84fcf8f1UL, 0xf00c9c98UL,
 416     0x554d0ee6UL, 0xbf63ce95UL, 0x1a225cebUL, 0x8b277743UL, 0x2e66e53dUL,
 417     0xc448254eUL, 0x6109b730UL, 0x15f9d359UL, 0xb0b84127UL, 0x5a968154UL,
 418     0xffd7132aUL, 0xb3764986UL, 0x1637dbf8UL, 0xfc191b8bUL, 0x595889f5UL,
 419     0x2da8ed9cUL, 0x88e97fe2UL, 0x62c7bf91UL, 0xc7862defUL, 0xfb850ac9UL,
 420     0x5ec498b7UL, 0xb4ea58c4UL, 0x11abcabaUL, 0x655baed3UL, 0xc01a3cadUL,
 421     0x2a34fcdeUL, 0x8f756ea0UL, 0xc3d4340cUL, 0x6695a672UL, 0x8cbb6601UL,
 422     0x29faf47fUL, 0x5d0a9016UL, 0xf84b0268UL, 0x1265c21bUL, 0xb7245065UL,
 423     0x6a638c57UL, 0xcf221e29UL, 0x250cde5aUL, 0x804d4c24UL, 0xf4bd284dUL,
 424     0x51fcba33UL, 0xbbd27a40UL, 0x1e93e83eUL, 0x5232b292UL, 0xf77320ecUL,
 425     0x1d5de09fUL, 0xb81c72e1UL, 0xccec1688UL, 0x69ad84f6UL, 0x83834485UL,
 426     0x26c2d6fbUL, 0x1ac1f1ddUL, 0xbf8063a3UL, 0x55aea3d0UL, 0xf0ef31aeUL,
 427     0x841f55c7UL, 0x215ec7b9UL, 0xcb7007caUL, 0x6e3195b4UL, 0x2290cf18UL,
 428     0x87d15d66UL, 0x6dff9d15UL, 0xc8be0f6bUL, 0xbc4e6b02UL, 0x190ff97cUL,
 429     0xf321390fUL, 0x5660ab71UL, 0x4c42f79aUL, 0xe90365e4UL, 0x032da597UL,
 430     0xa66c37e9UL, 0xd29c5380UL, 0x77ddc1feUL, 0x9df3018dUL, 0x38b293f3UL,
 431     0x7413c95fUL, 0xd1525b21UL, 0x3b7c9b52UL, 0x9e3d092cUL, 0xeacd6d45UL,
 432     0x4f8cff3bUL, 0xa5a23f48UL, 0x00e3ad36UL, 0x3ce08a10UL, 0x99a1186eUL,
 433     0x738fd81dUL, 0xd6ce4a63UL, 0xa23e2e0aUL, 0x077fbc74UL, 0xed517c07UL,
 434     0x4810ee79UL, 0x04b1b4d5UL, 0xa1f026abUL, 0x4bdee6d8UL, 0xee9f74a6UL,
 435     0x9a6f10cfUL, 0x3f2e82b1UL, 0xd50042c2UL, 0x7041d0bcUL, 0xad060c8eUL,
 436     0x08479ef0UL, 0xe2695e83UL, 0x4728ccfdUL, 0x33d8a894UL, 0x96993aeaUL,
 437     0x7cb7fa99UL, 0xd9f668e7UL, 0x9557324bUL, 0x3016a035UL, 0xda386046UL,
 438     0x7f79f238UL, 0x0b899651UL, 0xaec8042fUL, 0x44e6c45cUL, 0xe1a75622UL,
 439     0xdda47104UL, 0x78e5e37aUL, 0x92cb2309UL, 0x378ab177UL, 0x437ad51eUL,
 440     0xe63b4760UL, 0x0c158713UL, 0xa954156dUL, 0xe5f54fc1UL, 0x40b4ddbfUL,
 441     0xaa9a1dccUL, 0x0fdb8fb2UL, 0x7b2bebdbUL, 0xde6a79a5UL, 0x3444b9d6UL,
 442     0x91052ba8UL,
 443 
 444     // Table 3
 445     0x00000000UL, 0xdd45aab8UL, 0xbf672381UL, 0x62228939UL, 0x7b2231f3UL,
 446     0xa6679b4bUL, 0xc4451272UL, 0x1900b8caUL, 0xf64463e6UL, 0x2b01c95eUL,
 447     0x49234067UL, 0x9466eadfUL, 0x8d665215UL, 0x5023f8adUL, 0x32017194UL,
 448     0xef44db2cUL, 0xe964b13dUL, 0x34211b85UL, 0x560392bcUL, 0x8b463804UL,
 449     0x924680ceUL, 0x4f032a76UL, 0x2d21a34fUL, 0xf06409f7UL, 0x1f20d2dbUL,
 450     0xc2657863UL, 0xa047f15aUL, 0x7d025be2UL, 0x6402e328UL, 0xb9474990UL,
 451     0xdb65c0a9UL, 0x06206a11UL, 0xd725148bUL, 0x0a60be33UL, 0x6842370aUL,
 452     0xb5079db2UL, 0xac072578UL, 0x71428fc0UL, 0x136006f9UL, 0xce25ac41UL,
 453     0x2161776dUL, 0xfc24ddd5UL, 0x9e0654ecUL, 0x4343fe54UL, 0x5a43469eUL,
 454     0x8706ec26UL, 0xe524651fUL, 0x3861cfa7UL, 0x3e41a5b6UL, 0xe3040f0eUL,
 455     0x81268637UL, 0x5c632c8fUL, 0x45639445UL, 0x98263efdUL, 0xfa04b7c4UL,
 456     0x27411d7cUL, 0xc805c650UL, 0x15406ce8UL, 0x7762e5d1UL, 0xaa274f69UL,
 457     0xb327f7a3UL, 0x6e625d1bUL, 0x0c40d422UL, 0xd1057e9aUL, 0xaba65fe7UL,
 458     0x76e3f55fUL, 0x14c17c66UL, 0xc984d6deUL, 0xd0846e14UL, 0x0dc1c4acUL,
 459     0x6fe34d95UL, 0xb2a6e72dUL, 0x5de23c01UL, 0x80a796b9UL, 0xe2851f80UL,
 460     0x3fc0b538UL, 0x26c00df2UL, 0xfb85a74aUL, 0x99a72e73UL, 0x44e284cbUL,
 461     0x42c2eedaUL, 0x9f874462UL, 0xfda5cd5bUL, 0x20e067e3UL, 0x39e0df29UL,
 462     0xe4a57591UL, 0x8687fca8UL, 0x5bc25610UL, 0xb4868d3cUL, 0x69c32784UL,
 463     0x0be1aebdUL, 0xd6a40405UL, 0xcfa4bccfUL, 0x12e11677UL, 0x70c39f4eUL,
 464     0xad8635f6UL, 0x7c834b6cUL, 0xa1c6e1d4UL, 0xc3e468edUL, 0x1ea1c255UL,
 465     0x07a17a9fUL, 0xdae4d027UL, 0xb8c6591eUL, 0x6583f3a6UL, 0x8ac7288aUL,
 466     0x57828232UL, 0x35a00b0bUL, 0xe8e5a1b3UL, 0xf1e51979UL, 0x2ca0b3c1UL,
 467     0x4e823af8UL, 0x93c79040UL, 0x95e7fa51UL, 0x48a250e9UL, 0x2a80d9d0UL,
 468     0xf7c57368UL, 0xeec5cba2UL, 0x3380611aUL, 0x51a2e823UL, 0x8ce7429bUL,
 469     0x63a399b7UL, 0xbee6330fUL, 0xdcc4ba36UL, 0x0181108eUL, 0x1881a844UL,
 470     0xc5c402fcUL, 0xa7e68bc5UL, 0x7aa3217dUL, 0x52a0c93fUL, 0x8fe56387UL,
 471     0xedc7eabeUL, 0x30824006UL, 0x2982f8ccUL, 0xf4c75274UL, 0x96e5db4dUL,
 472     0x4ba071f5UL, 0xa4e4aad9UL, 0x79a10061UL, 0x1b838958UL, 0xc6c623e0UL,
 473     0xdfc69b2aUL, 0x02833192UL, 0x60a1b8abUL, 0xbde41213UL, 0xbbc47802UL,
 474     0x6681d2baUL, 0x04a35b83UL, 0xd9e6f13bUL, 0xc0e649f1UL, 0x1da3e349UL,
 475     0x7f816a70UL, 0xa2c4c0c8UL, 0x4d801be4UL, 0x90c5b15cUL, 0xf2e73865UL,
 476     0x2fa292ddUL, 0x36a22a17UL, 0xebe780afUL, 0x89c50996UL, 0x5480a32eUL,
 477     0x8585ddb4UL, 0x58c0770cUL, 0x3ae2fe35UL, 0xe7a7548dUL, 0xfea7ec47UL,
 478     0x23e246ffUL, 0x41c0cfc6UL, 0x9c85657eUL, 0x73c1be52UL, 0xae8414eaUL,
 479     0xcca69dd3UL, 0x11e3376bUL, 0x08e38fa1UL, 0xd5a62519UL, 0xb784ac20UL,
 480     0x6ac10698UL, 0x6ce16c89UL, 0xb1a4c631UL, 0xd3864f08UL, 0x0ec3e5b0UL,
 481     0x17c35d7aUL, 0xca86f7c2UL, 0xa8a47efbUL, 0x75e1d443UL, 0x9aa50f6fUL,
 482     0x47e0a5d7UL, 0x25c22ceeUL, 0xf8878656UL, 0xe1873e9cUL, 0x3cc29424UL,
 483     0x5ee01d1dUL, 0x83a5b7a5UL, 0xf90696d8UL, 0x24433c60UL, 0x4661b559UL,
 484     0x9b241fe1UL, 0x8224a72bUL, 0x5f610d93UL, 0x3d4384aaUL, 0xe0062e12UL,
 485     0x0f42f53eUL, 0xd2075f86UL, 0xb025d6bfUL, 0x6d607c07UL, 0x7460c4cdUL,
 486     0xa9256e75UL, 0xcb07e74cUL, 0x16424df4UL, 0x106227e5UL, 0xcd278d5dUL,
 487     0xaf050464UL, 0x7240aedcUL, 0x6b401616UL, 0xb605bcaeUL, 0xd4273597UL,
 488     0x09629f2fUL, 0xe6264403UL, 0x3b63eebbUL, 0x59416782UL, 0x8404cd3aUL,
 489     0x9d0475f0UL, 0x4041df48UL, 0x22635671UL, 0xff26fcc9UL, 0x2e238253UL,
 490     0xf36628ebUL, 0x9144a1d2UL, 0x4c010b6aUL, 0x5501b3a0UL, 0x88441918UL,
 491     0xea669021UL, 0x37233a99UL, 0xd867e1b5UL, 0x05224b0dUL, 0x6700c234UL,
 492     0xba45688cUL, 0xa345d046UL, 0x7e007afeUL, 0x1c22f3c7UL, 0xc167597fUL,
 493     0xc747336eUL, 0x1a0299d6UL, 0x782010efUL, 0xa565ba57UL, 0xbc65029dUL,
 494     0x6120a825UL, 0x0302211cUL, 0xde478ba4UL, 0x31035088UL, 0xec46fa30UL,
 495     0x8e647309UL, 0x5321d9b1UL, 0x4a21617bUL, 0x9764cbc3UL, 0xf54642faUL,
 496     0x2803e842UL,
 497     // Constants for Neon CRC32C implementation, 128-bit operation
 498     // k3 = 0x790606ff = x^160 mod poly - bit reversed
 499     // k4 = 0x18b8ea18 = x^128 mod poly - bit reversed
 500     // poly = x^32 + x^28 + x^27 + x^26 + x^25 + x^23 + x^22 + x^20 + x^19 + x^18 + x^14 + x^13 + x^11 + x^10 + x^9 + x^8 + x^6 + x^0 + 0
 501     0x790606ff, 0x18b8ea18,     // k4:k3
 502     0x0679ff06, 0xb81818ea,     // byte swap
 503     0x06ff7906, 0xea1818b8,     // word swap
 504     0xff060679, 0x18eab818,     // byte swap of word swap
 505 };
 506 
 507 
 508 /**
 509  *  AES_TE[] table for AES encryption
 510  */
 511 juint StubRoutines::aarch32::_aes_te_table[]
 512                    __attribute__ ((aligned(2048))) =
 513 {
 514     //T
 515     0xc66363a5UL, 0xf87c7c84UL, 0xee777799UL, 0xf67b7b8dUL,
 516     0xfff2f20dUL, 0xd66b6bbdUL, 0xde6f6fb1UL, 0x91c5c554UL,
 517     0x60303050UL, 0x02010103UL, 0xce6767a9UL, 0x562b2b7dUL,
 518     0xe7fefe19UL, 0xb5d7d762UL, 0x4dababe6UL, 0xec76769aUL,
 519     0x8fcaca45UL, 0x1f82829dUL, 0x89c9c940UL, 0xfa7d7d87UL,
 520     0xeffafa15UL, 0xb25959ebUL, 0x8e4747c9UL, 0xfbf0f00bUL,
 521     0x41adadecUL, 0xb3d4d467UL, 0x5fa2a2fdUL, 0x45afafeaUL,
 522     0x239c9cbfUL, 0x53a4a4f7UL, 0xe4727296UL, 0x9bc0c05bUL,
 523     0x75b7b7c2UL, 0xe1fdfd1cUL, 0x3d9393aeUL, 0x4c26266aUL,
 524     0x6c36365aUL, 0x7e3f3f41UL, 0xf5f7f702UL, 0x83cccc4fUL,
 525     0x6834345cUL, 0x51a5a5f4UL, 0xd1e5e534UL, 0xf9f1f108UL,
 526     0xe2717193UL, 0xabd8d873UL, 0x62313153UL, 0x2a15153fUL,
 527     0x0804040cUL, 0x95c7c752UL, 0x46232365UL, 0x9dc3c35eUL,
 528     0x30181828UL, 0x379696a1UL, 0x0a05050fUL, 0x2f9a9ab5UL,
 529     0x0e070709UL, 0x24121236UL, 0x1b80809bUL, 0xdfe2e23dUL,
 530     0xcdebeb26UL, 0x4e272769UL, 0x7fb2b2cdUL, 0xea75759fUL,
 531     0x1209091bUL, 0x1d83839eUL, 0x582c2c74UL, 0x341a1a2eUL,
 532     0x361b1b2dUL, 0xdc6e6eb2UL, 0xb45a5aeeUL, 0x5ba0a0fbUL,
 533     0xa45252f6UL, 0x763b3b4dUL, 0xb7d6d661UL, 0x7db3b3ceUL,
 534     0x5229297bUL, 0xdde3e33eUL, 0x5e2f2f71UL, 0x13848497UL,
 535     0xa65353f5UL, 0xb9d1d168UL, 0x00000000UL, 0xc1eded2cUL,
 536     0x40202060UL, 0xe3fcfc1fUL, 0x79b1b1c8UL, 0xb65b5bedUL,
 537     0xd46a6abeUL, 0x8dcbcb46UL, 0x67bebed9UL, 0x7239394bUL,
 538     0x944a4adeUL, 0x984c4cd4UL, 0xb05858e8UL, 0x85cfcf4aUL,
 539     0xbbd0d06bUL, 0xc5efef2aUL, 0x4faaaae5UL, 0xedfbfb16UL,
 540     0x864343c5UL, 0x9a4d4dd7UL, 0x66333355UL, 0x11858594UL,
 541     0x8a4545cfUL, 0xe9f9f910UL, 0x04020206UL, 0xfe7f7f81UL,
 542     0xa05050f0UL, 0x783c3c44UL, 0x259f9fbaUL, 0x4ba8a8e3UL,
 543     0xa25151f3UL, 0x5da3a3feUL, 0x804040c0UL, 0x058f8f8aUL,
 544     0x3f9292adUL, 0x219d9dbcUL, 0x70383848UL, 0xf1f5f504UL,
 545     0x63bcbcdfUL, 0x77b6b6c1UL, 0xafdada75UL, 0x42212163UL,
 546     0x20101030UL, 0xe5ffff1aUL, 0xfdf3f30eUL, 0xbfd2d26dUL,
 547     0x81cdcd4cUL, 0x180c0c14UL, 0x26131335UL, 0xc3ecec2fUL,
 548     0xbe5f5fe1UL, 0x359797a2UL, 0x884444ccUL, 0x2e171739UL,
 549     0x93c4c457UL, 0x55a7a7f2UL, 0xfc7e7e82UL, 0x7a3d3d47UL,
 550     0xc86464acUL, 0xba5d5de7UL, 0x3219192bUL, 0xe6737395UL,
 551     0xc06060a0UL, 0x19818198UL, 0x9e4f4fd1UL, 0xa3dcdc7fUL,
 552     0x44222266UL, 0x542a2a7eUL, 0x3b9090abUL, 0x0b888883UL,
 553     0x8c4646caUL, 0xc7eeee29UL, 0x6bb8b8d3UL, 0x2814143cUL,
 554     0xa7dede79UL, 0xbc5e5ee2UL, 0x160b0b1dUL, 0xaddbdb76UL,
 555     0xdbe0e03bUL, 0x64323256UL, 0x743a3a4eUL, 0x140a0a1eUL,
 556     0x924949dbUL, 0x0c06060aUL, 0x4824246cUL, 0xb85c5ce4UL,
 557     0x9fc2c25dUL, 0xbdd3d36eUL, 0x43acacefUL, 0xc46262a6UL,
 558     0x399191a8UL, 0x319595a4UL, 0xd3e4e437UL, 0xf279798bUL,
 559     0xd5e7e732UL, 0x8bc8c843UL, 0x6e373759UL, 0xda6d6db7UL,
 560     0x018d8d8cUL, 0xb1d5d564UL, 0x9c4e4ed2UL, 0x49a9a9e0UL,
 561     0xd86c6cb4UL, 0xac5656faUL, 0xf3f4f407UL, 0xcfeaea25UL,
 562     0xca6565afUL, 0xf47a7a8eUL, 0x47aeaee9UL, 0x10080818UL,
 563     0x6fbabad5UL, 0xf0787888UL, 0x4a25256fUL, 0x5c2e2e72UL,
 564     0x381c1c24UL, 0x57a6a6f1UL, 0x73b4b4c7UL, 0x97c6c651UL,
 565     0xcbe8e823UL, 0xa1dddd7cUL, 0xe874749cUL, 0x3e1f1f21UL,
 566     0x964b4bddUL, 0x61bdbddcUL, 0x0d8b8b86UL, 0x0f8a8a85UL,
 567     0xe0707090UL, 0x7c3e3e42UL, 0x71b5b5c4UL, 0xcc6666aaUL,
 568     0x904848d8UL, 0x06030305UL, 0xf7f6f601UL, 0x1c0e0e12UL,
 569     0xc26161a3UL, 0x6a35355fUL, 0xae5757f9UL, 0x69b9b9d0UL,
 570     0x17868691UL, 0x99c1c158UL, 0x3a1d1d27UL, 0x279e9eb9UL,
 571     0xd9e1e138UL, 0xebf8f813UL, 0x2b9898b3UL, 0x22111133UL,
 572     0xd26969bbUL, 0xa9d9d970UL, 0x078e8e89UL, 0x339494a7UL,
 573     0x2d9b9bb6UL, 0x3c1e1e22UL, 0x15878792UL, 0xc9e9e920UL,
 574     0x87cece49UL, 0xaa5555ffUL, 0x50282878UL, 0xa5dfdf7aUL,
 575     0x038c8c8fUL, 0x59a1a1f8UL, 0x09898980UL, 0x1a0d0d17UL,
 576     0x65bfbfdaUL, 0xd7e6e631UL, 0x844242c6UL, 0xd06868b8UL,
 577     0x824141c3UL, 0x299999b0UL, 0x5a2d2d77UL, 0x1e0f0f11UL,
 578     0x7bb0b0cbUL, 0xa85454fcUL, 0x6dbbbbd6UL, 0x2c16163aUL,
 579     //S
 580     0x63UL, 0x7cUL, 0x77UL, 0x7bUL, 0xf2UL, 0x6bUL, 0x6fUL, 0xc5UL,
 581     0x30UL, 0x01UL, 0x67UL, 0x2bUL, 0xfeUL, 0xd7UL, 0xabUL, 0x76UL,
 582     0xcaUL, 0x82UL, 0xc9UL, 0x7dUL, 0xfaUL, 0x59UL, 0x47UL, 0xf0UL,
 583     0xadUL, 0xd4UL, 0xa2UL, 0xafUL, 0x9cUL, 0xa4UL, 0x72UL, 0xc0UL,
 584     0xb7UL, 0xfdUL, 0x93UL, 0x26UL, 0x36UL, 0x3fUL, 0xf7UL, 0xccUL,
 585     0x34UL, 0xa5UL, 0xe5UL, 0xf1UL, 0x71UL, 0xd8UL, 0x31UL, 0x15UL,
 586     0x04UL, 0xc7UL, 0x23UL, 0xc3UL, 0x18UL, 0x96UL, 0x05UL, 0x9aUL,
 587     0x07UL, 0x12UL, 0x80UL, 0xe2UL, 0xebUL, 0x27UL, 0xb2UL, 0x75UL,
 588     0x09UL, 0x83UL, 0x2cUL, 0x1aUL, 0x1bUL, 0x6eUL, 0x5aUL, 0xa0UL,
 589     0x52UL, 0x3bUL, 0xd6UL, 0xb3UL, 0x29UL, 0xe3UL, 0x2fUL, 0x84UL,
 590     0x53UL, 0xd1UL, 0x00UL, 0xedUL, 0x20UL, 0xfcUL, 0xb1UL, 0x5bUL,
 591     0x6aUL, 0xcbUL, 0xbeUL, 0x39UL, 0x4aUL, 0x4cUL, 0x58UL, 0xcfUL,
 592     0xd0UL, 0xefUL, 0xaaUL, 0xfbUL, 0x43UL, 0x4dUL, 0x33UL, 0x85UL,
 593     0x45UL, 0xf9UL, 0x02UL, 0x7fUL, 0x50UL, 0x3cUL, 0x9fUL, 0xa8UL,
 594     0x51UL, 0xa3UL, 0x40UL, 0x8fUL, 0x92UL, 0x9dUL, 0x38UL, 0xf5UL,
 595     0xbcUL, 0xb6UL, 0xdaUL, 0x21UL, 0x10UL, 0xffUL, 0xf3UL, 0xd2UL,
 596     0xcdUL, 0x0cUL, 0x13UL, 0xecUL, 0x5fUL, 0x97UL, 0x44UL, 0x17UL,
 597     0xc4UL, 0xa7UL, 0x7eUL, 0x3dUL, 0x64UL, 0x5dUL, 0x19UL, 0x73UL,
 598     0x60UL, 0x81UL, 0x4fUL, 0xdcUL, 0x22UL, 0x2aUL, 0x90UL, 0x88UL,
 599     0x46UL, 0xeeUL, 0xb8UL, 0x14UL, 0xdeUL, 0x5eUL, 0x0bUL, 0xdbUL,
 600     0xe0UL, 0x32UL, 0x3aUL, 0x0aUL, 0x49UL, 0x06UL, 0x24UL, 0x5cUL,
 601     0xc2UL, 0xd3UL, 0xacUL, 0x62UL, 0x91UL, 0x95UL, 0xe4UL, 0x79UL,
 602     0xe7UL, 0xc8UL, 0x37UL, 0x6dUL, 0x8dUL, 0xd5UL, 0x4eUL, 0xa9UL,
 603     0x6cUL, 0x56UL, 0xf4UL, 0xeaUL, 0x65UL, 0x7aUL, 0xaeUL, 0x08UL,
 604     0xbaUL, 0x78UL, 0x25UL, 0x2eUL, 0x1cUL, 0xa6UL, 0xb4UL, 0xc6UL,
 605     0xe8UL, 0xddUL, 0x74UL, 0x1fUL, 0x4bUL, 0xbdUL, 0x8bUL, 0x8aUL,
 606     0x70UL, 0x3eUL, 0xb5UL, 0x66UL, 0x48UL, 0x03UL, 0xf6UL, 0x0eUL,
 607     0x61UL, 0x35UL, 0x57UL, 0xb9UL, 0x86UL, 0xc1UL, 0x1dUL, 0x9eUL,
 608     0xe1UL, 0xf8UL, 0x98UL, 0x11UL, 0x69UL, 0xd9UL, 0x8eUL, 0x94UL,
 609     0x9bUL, 0x1eUL, 0x87UL, 0xe9UL, 0xceUL, 0x55UL, 0x28UL, 0xdfUL,
 610     0x8cUL, 0xa1UL, 0x89UL, 0x0dUL, 0xbfUL, 0xe6UL, 0x42UL, 0x68UL,
 611     0x41UL, 0x99UL, 0x2dUL, 0x0fUL, 0xb0UL, 0x54UL, 0xbbUL, 0x16UL,
 612     //rcon
 613     0x01000000UL, 0x02000000UL, 0x04000000UL, 0x08000000UL,
 614     0x10000000UL, 0x20000000UL, 0x40000000UL, 0x80000000UL,
 615     0x1B000000UL, 0x36000000UL, 0UL, 0UL,
 616     0UL, 0UL, 0UL, 0UL
 617 };
 618 
 619 
 620 /**
 621  *  AES_TD[] table for AES decryption
 622  */
 623 juint StubRoutines::aarch32::_aes_td_table[]
 624                    __attribute__ ((aligned(2048))) =
 625 {
 626     //T
 627     0x51f4a750UL, 0x7e416553UL, 0x1a17a4c3UL, 0x3a275e96UL,
 628     0x3bab6bcbUL, 0x1f9d45f1UL, 0xacfa58abUL, 0x4be30393UL,
 629     0x2030fa55UL, 0xad766df6UL, 0x88cc7691UL, 0xf5024c25UL,
 630     0x4fe5d7fcUL, 0xc52acbd7UL, 0x26354480UL, 0xb562a38fUL,
 631     0xdeb15a49UL, 0x25ba1b67UL, 0x45ea0e98UL, 0x5dfec0e1UL,
 632     0xc32f7502UL, 0x814cf012UL, 0x8d4697a3UL, 0x6bd3f9c6UL,
 633     0x038f5fe7UL, 0x15929c95UL, 0xbf6d7aebUL, 0x955259daUL,
 634     0xd4be832dUL, 0x587421d3UL, 0x49e06929UL, 0x8ec9c844UL,
 635     0x75c2896aUL, 0xf48e7978UL, 0x99583e6bUL, 0x27b971ddUL,
 636     0xbee14fb6UL, 0xf088ad17UL, 0xc920ac66UL, 0x7dce3ab4UL,
 637     0x63df4a18UL, 0xe51a3182UL, 0x97513360UL, 0x62537f45UL,
 638     0xb16477e0UL, 0xbb6bae84UL, 0xfe81a01cUL, 0xf9082b94UL,
 639     0x70486858UL, 0x8f45fd19UL, 0x94de6c87UL, 0x527bf8b7UL,
 640     0xab73d323UL, 0x724b02e2UL, 0xe31f8f57UL, 0x6655ab2aUL,
 641     0xb2eb2807UL, 0x2fb5c203UL, 0x86c57b9aUL, 0xd33708a5UL,
 642     0x302887f2UL, 0x23bfa5b2UL, 0x02036abaUL, 0xed16825cUL,
 643     0x8acf1c2bUL, 0xa779b492UL, 0xf307f2f0UL, 0x4e69e2a1UL,
 644     0x65daf4cdUL, 0x0605bed5UL, 0xd134621fUL, 0xc4a6fe8aUL,
 645     0x342e539dUL, 0xa2f355a0UL, 0x058ae132UL, 0xa4f6eb75UL,
 646     0x0b83ec39UL, 0x4060efaaUL, 0x5e719f06UL, 0xbd6e1051UL,
 647     0x3e218af9UL, 0x96dd063dUL, 0xdd3e05aeUL, 0x4de6bd46UL,
 648     0x91548db5UL, 0x71c45d05UL, 0x0406d46fUL, 0x605015ffUL,
 649     0x1998fb24UL, 0xd6bde997UL, 0x894043ccUL, 0x67d99e77UL,
 650     0xb0e842bdUL, 0x07898b88UL, 0xe7195b38UL, 0x79c8eedbUL,
 651     0xa17c0a47UL, 0x7c420fe9UL, 0xf8841ec9UL, 0x00000000UL,
 652     0x09808683UL, 0x322bed48UL, 0x1e1170acUL, 0x6c5a724eUL,
 653     0xfd0efffbUL, 0x0f853856UL, 0x3daed51eUL, 0x362d3927UL,
 654     0x0a0fd964UL, 0x685ca621UL, 0x9b5b54d1UL, 0x24362e3aUL,
 655     0x0c0a67b1UL, 0x9357e70fUL, 0xb4ee96d2UL, 0x1b9b919eUL,
 656     0x80c0c54fUL, 0x61dc20a2UL, 0x5a774b69UL, 0x1c121a16UL,
 657     0xe293ba0aUL, 0xc0a02ae5UL, 0x3c22e043UL, 0x121b171dUL,
 658     0x0e090d0bUL, 0xf28bc7adUL, 0x2db6a8b9UL, 0x141ea9c8UL,
 659     0x57f11985UL, 0xaf75074cUL, 0xee99ddbbUL, 0xa37f60fdUL,
 660     0xf701269fUL, 0x5c72f5bcUL, 0x44663bc5UL, 0x5bfb7e34UL,
 661     0x8b432976UL, 0xcb23c6dcUL, 0xb6edfc68UL, 0xb8e4f163UL,
 662     0xd731dccaUL, 0x42638510UL, 0x13972240UL, 0x84c61120UL,
 663     0x854a247dUL, 0xd2bb3df8UL, 0xaef93211UL, 0xc729a16dUL,
 664     0x1d9e2f4bUL, 0xdcb230f3UL, 0x0d8652ecUL, 0x77c1e3d0UL,
 665     0x2bb3166cUL, 0xa970b999UL, 0x119448faUL, 0x47e96422UL,
 666     0xa8fc8cc4UL, 0xa0f03f1aUL, 0x567d2cd8UL, 0x223390efUL,
 667     0x87494ec7UL, 0xd938d1c1UL, 0x8ccaa2feUL, 0x98d40b36UL,
 668     0xa6f581cfUL, 0xa57ade28UL, 0xdab78e26UL, 0x3fadbfa4UL,
 669     0x2c3a9de4UL, 0x5078920dUL, 0x6a5fcc9bUL, 0x547e4662UL,
 670     0xf68d13c2UL, 0x90d8b8e8UL, 0x2e39f75eUL, 0x82c3aff5UL,
 671     0x9f5d80beUL, 0x69d0937cUL, 0x6fd52da9UL, 0xcf2512b3UL,
 672     0xc8ac993bUL, 0x10187da7UL, 0xe89c636eUL, 0xdb3bbb7bUL,
 673     0xcd267809UL, 0x6e5918f4UL, 0xec9ab701UL, 0x834f9aa8UL,
 674     0xe6956e65UL, 0xaaffe67eUL, 0x21bccf08UL, 0xef15e8e6UL,
 675     0xbae79bd9UL, 0x4a6f36ceUL, 0xea9f09d4UL, 0x29b07cd6UL,
 676     0x31a4b2afUL, 0x2a3f2331UL, 0xc6a59430UL, 0x35a266c0UL,
 677     0x744ebc37UL, 0xfc82caa6UL, 0xe090d0b0UL, 0x33a7d815UL,
 678     0xf104984aUL, 0x41ecdaf7UL, 0x7fcd500eUL, 0x1791f62fUL,
 679     0x764dd68dUL, 0x43efb04dUL, 0xccaa4d54UL, 0xe49604dfUL,
 680     0x9ed1b5e3UL, 0x4c6a881bUL, 0xc12c1fb8UL, 0x4665517fUL,
 681     0x9d5eea04UL, 0x018c355dUL, 0xfa877473UL, 0xfb0b412eUL,
 682     0xb3671d5aUL, 0x92dbd252UL, 0xe9105633UL, 0x6dd64713UL,
 683     0x9ad7618cUL, 0x37a10c7aUL, 0x59f8148eUL, 0xeb133c89UL,
 684     0xcea927eeUL, 0xb761c935UL, 0xe11ce5edUL, 0x7a47b13cUL,
 685     0x9cd2df59UL, 0x55f2733fUL, 0x1814ce79UL, 0x73c737bfUL,
 686     0x53f7cdeaUL, 0x5ffdaa5bUL, 0xdf3d6f14UL, 0x7844db86UL,
 687     0xcaaff381UL, 0xb968c43eUL, 0x3824342cUL, 0xc2a3405fUL,
 688     0x161dc372UL, 0xbce2250cUL, 0x283c498bUL, 0xff0d9541UL,
 689     0x39a80171UL, 0x080cb3deUL, 0xd8b4e49cUL, 0x6456c190UL,
 690     0x7bcb8461UL, 0xd532b670UL, 0x486c5c74UL, 0xd0b85742UL,
 691 //S
 692     0x52UL, 0x09UL, 0x6aUL, 0xd5UL, 0x30UL, 0x36UL, 0xa5UL, 0x38UL,
 693     0xbfUL, 0x40UL, 0xa3UL, 0x9eUL, 0x81UL, 0xf3UL, 0xd7UL, 0xfbUL,
 694     0x7cUL, 0xe3UL, 0x39UL, 0x82UL, 0x9bUL, 0x2fUL, 0xffUL, 0x87UL,
 695     0x34UL, 0x8eUL, 0x43UL, 0x44UL, 0xc4UL, 0xdeUL, 0xe9UL, 0xcbUL,
 696     0x54UL, 0x7bUL, 0x94UL, 0x32UL, 0xa6UL, 0xc2UL, 0x23UL, 0x3dUL,
 697     0xeeUL, 0x4cUL, 0x95UL, 0x0bUL, 0x42UL, 0xfaUL, 0xc3UL, 0x4eUL,
 698     0x08UL, 0x2eUL, 0xa1UL, 0x66UL, 0x28UL, 0xd9UL, 0x24UL, 0xb2UL,
 699     0x76UL, 0x5bUL, 0xa2UL, 0x49UL, 0x6dUL, 0x8bUL, 0xd1UL, 0x25UL,
 700     0x72UL, 0xf8UL, 0xf6UL, 0x64UL, 0x86UL, 0x68UL, 0x98UL, 0x16UL,
 701     0xd4UL, 0xa4UL, 0x5cUL, 0xccUL, 0x5dUL, 0x65UL, 0xb6UL, 0x92UL,
 702     0x6cUL, 0x70UL, 0x48UL, 0x50UL, 0xfdUL, 0xedUL, 0xb9UL, 0xdaUL,
 703     0x5eUL, 0x15UL, 0x46UL, 0x57UL, 0xa7UL, 0x8dUL, 0x9dUL, 0x84UL,
 704     0x90UL, 0xd8UL, 0xabUL, 0x00UL, 0x8cUL, 0xbcUL, 0xd3UL, 0x0aUL,
 705     0xf7UL, 0xe4UL, 0x58UL, 0x05UL, 0xb8UL, 0xb3UL, 0x45UL, 0x06UL,
 706     0xd0UL, 0x2cUL, 0x1eUL, 0x8fUL, 0xcaUL, 0x3fUL, 0x0fUL, 0x02UL,
 707     0xc1UL, 0xafUL, 0xbdUL, 0x03UL, 0x01UL, 0x13UL, 0x8aUL, 0x6bUL,
 708     0x3aUL, 0x91UL, 0x11UL, 0x41UL, 0x4fUL, 0x67UL, 0xdcUL, 0xeaUL,
 709     0x97UL, 0xf2UL, 0xcfUL, 0xceUL, 0xf0UL, 0xb4UL, 0xe6UL, 0x73UL,
 710     0x96UL, 0xacUL, 0x74UL, 0x22UL, 0xe7UL, 0xadUL, 0x35UL, 0x85UL,
 711     0xe2UL, 0xf9UL, 0x37UL, 0xe8UL, 0x1cUL, 0x75UL, 0xdfUL, 0x6eUL,
 712     0x47UL, 0xf1UL, 0x1aUL, 0x71UL, 0x1dUL, 0x29UL, 0xc5UL, 0x89UL,
 713     0x6fUL, 0xb7UL, 0x62UL, 0x0eUL, 0xaaUL, 0x18UL, 0xbeUL, 0x1bUL,
 714     0xfcUL, 0x56UL, 0x3eUL, 0x4bUL, 0xc6UL, 0xd2UL, 0x79UL, 0x20UL,
 715     0x9aUL, 0xdbUL, 0xc0UL, 0xfeUL, 0x78UL, 0xcdUL, 0x5aUL, 0xf4UL,
 716     0x1fUL, 0xddUL, 0xa8UL, 0x33UL, 0x88UL, 0x07UL, 0xc7UL, 0x31UL,
 717     0xb1UL, 0x12UL, 0x10UL, 0x59UL, 0x27UL, 0x80UL, 0xecUL, 0x5fUL,
 718     0x60UL, 0x51UL, 0x7fUL, 0xa9UL, 0x19UL, 0xb5UL, 0x4aUL, 0x0dUL,
 719     0x2dUL, 0xe5UL, 0x7aUL, 0x9fUL, 0x93UL, 0xc9UL, 0x9cUL, 0xefUL,
 720     0xa0UL, 0xe0UL, 0x3bUL, 0x4dUL, 0xaeUL, 0x2aUL, 0xf5UL, 0xb0UL,
 721     0xc8UL, 0xebUL, 0xbbUL, 0x3cUL, 0x83UL, 0x53UL, 0x99UL, 0x61UL,
 722     0x17UL, 0x2bUL, 0x04UL, 0x7eUL, 0xbaUL, 0x77UL, 0xd6UL, 0x26UL,
 723     0xe1UL, 0x69UL, 0x14UL, 0x63UL, 0x55UL, 0x21UL, 0x0cUL, 0x7dUL
 724 };
 725 
 726 /**
 727  *  SHA256[] table for SHA256 Digest
 728  */
 729 juint StubRoutines::aarch32::_sha1_table[]
 730                    __attribute__ ((aligned(1024))) =
 731 {
 732     //k
 733     0x5A827999UL, 0x6ED9EBA1UL, 0x8F1BBCDCUL, 0xCA62C1D6UL
 734 };
 735 
 736 /**
 737  *  SHA256[] table for SHA256 Digest
 738  */
 739 juint StubRoutines::aarch32::_sha256_table[]
 740                    __attribute__ ((aligned(1024))) =
 741 {
 742     //k
 743     0x428A2F98UL, 0x71374491UL, 0xB5C0FBCFUL, 0xE9B5DBA5UL,
 744     0x3956C25BUL, 0x59F111F1UL, 0x923F82A4UL, 0xAB1C5ED5UL,
 745     0xD807AA98UL, 0x12835B01UL, 0x243185BEUL, 0x550C7DC3UL,
 746     0x72BE5D74UL, 0x80DEB1FEUL, 0x9BDC06A7UL, 0xC19BF174UL,
 747     0xE49B69C1UL, 0xEFBE4786UL, 0x0FC19DC6UL, 0x240CA1CCUL,
 748     0x2DE92C6FUL, 0x4A7484AAUL, 0x5CB0A9DCUL, 0x76F988DAUL,
 749     0x983E5152UL, 0xA831C66DUL, 0xB00327C8UL, 0xBF597FC7UL,
 750     0xC6E00BF3UL, 0xD5A79147UL, 0x06CA6351UL, 0x14292967UL,
 751     0x27B70A85UL, 0x2E1B2138UL, 0x4D2C6DFCUL, 0x53380D13UL,
 752     0x650A7354UL, 0x766A0ABBUL, 0x81C2C92EUL, 0x92722C85UL,
 753     0xA2BFE8A1UL, 0xA81A664BUL, 0xC24B8B70UL, 0xC76C51A3UL,
 754     0xD192E819UL, 0xD6990624UL, 0xF40E3585UL, 0x106AA070UL,
 755     0x19A4C116UL, 0x1E376C08UL, 0x2748774CUL, 0x34B0BCB5UL,
 756     0x391C0CB3UL, 0x4ED8AA4AUL, 0x5B9CCA4FUL, 0x682E6FF3UL,
 757     0x748F82EEUL, 0x78A5636FUL, 0x84C87814UL, 0x8CC70208UL,
 758     0x90BEFFFAUL, 0xA4506CEBUL, 0xBEF9A3F7UL, 0xC67178F2UL
 759 };
 760 
 761 /**
 762  *  SHA512[] table for SHA512 Digest
 763  */
 764 julong StubRoutines::aarch32::_sha512_table[]
 765                    __attribute__ ((aligned(1024))) =
 766 {
 767     //k
 768   0x428a2f98d728ae22UL, 0x7137449123ef65cdUL, 0xb5c0fbcfec4d3b2fUL, 0xe9b5dba58189dbbcUL,
 769   0x3956c25bf348b538UL, 0x59f111f1b605d019UL, 0x923f82a4af194f9bUL, 0xab1c5ed5da6d8118UL,
 770   0xd807aa98a3030242UL, 0x12835b0145706fbeUL, 0x243185be4ee4b28cUL, 0x550c7dc3d5ffb4e2UL,
 771   0x72be5d74f27b896fUL, 0x80deb1fe3b1696b1UL, 0x9bdc06a725c71235UL, 0xc19bf174cf692694UL,
 772   0xe49b69c19ef14ad2UL, 0xefbe4786384f25e3UL, 0x0fc19dc68b8cd5b5UL, 0x240ca1cc77ac9c65UL,
 773   0x2de92c6f592b0275UL, 0x4a7484aa6ea6e483UL, 0x5cb0a9dcbd41fbd4UL, 0x76f988da831153b5UL,
 774   0x983e5152ee66dfabUL, 0xa831c66d2db43210UL, 0xb00327c898fb213fUL, 0xbf597fc7beef0ee4UL,
 775   0xc6e00bf33da88fc2UL, 0xd5a79147930aa725UL, 0x06ca6351e003826fUL, 0x142929670a0e6e70UL,
 776   0x27b70a8546d22ffcUL, 0x2e1b21385c26c926UL, 0x4d2c6dfc5ac42aedUL, 0x53380d139d95b3dfUL,
 777   0x650a73548baf63deUL, 0x766a0abb3c77b2a8UL, 0x81c2c92e47edaee6UL, 0x92722c851482353bUL,
 778   0xa2bfe8a14cf10364UL, 0xa81a664bbc423001UL, 0xc24b8b70d0f89791UL, 0xc76c51a30654be30UL,
 779   0xd192e819d6ef5218UL, 0xd69906245565a910UL, 0xf40e35855771202aUL, 0x106aa07032bbd1b8UL,
 780   0x19a4c116b8d2d0c8UL, 0x1e376c085141ab53UL, 0x2748774cdf8eeb99UL, 0x34b0bcb5e19b48a8UL,
 781   0x391c0cb3c5c95a63UL, 0x4ed8aa4ae3418acbUL, 0x5b9cca4f7763e373UL, 0x682e6ff3d6b2b8a3UL,
 782   0x748f82ee5defb2fcUL, 0x78a5636f43172f60UL, 0x84c87814a1f0ab72UL, 0x8cc702081a6439ecUL,
 783   0x90befffa23631e28UL, 0xa4506cebde82bde9UL, 0xbef9a3f7b2c67915UL, 0xc67178f2e372532bUL,
 784   0xca273eceea26619cUL, 0xd186b8c721c0c207UL, 0xeada7dd6cde0eb1eUL, 0xf57d4f7fee6ed178UL,
 785   0x06f067aa72176fbaUL, 0x0a637dc5a2c898a6UL, 0x113f9804bef90daeUL, 0x1b710b35131c471bUL,
 786   0x28db77f523047d84UL, 0x32caab7b40c72493UL, 0x3c9ebe0a15c9bebcUL, 0x431d67c49c100d4cUL,
 787   0x4cc5d4becb3e42b6UL, 0x597f299cfc657e2aUL, 0x5fcb6fab3ad6faecUL, 0x6c44198c4a475817UL
 788 };
 789 
 790 address StubRoutines::_cipherBlockChaining_encryptAESCrypt_special = NULL;
 791 address StubRoutines::_cipherBlockChaining_decryptAESCrypt_special = NULL;
 792 address StubRoutines::_aes_table_te_addr = NULL;
 793 address StubRoutines::_aes_table_td_addr = NULL;
 794 
 795 address StubRoutines::_sha1_table_addr       = NULL;
 796 address StubRoutines::_sha256_table_addr     = NULL;
 797 address StubRoutines::_sha512_table_addr     = NULL;