13f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 23f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ ==================================================================== 33f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ Written by Andy Polyakov <appro@openssl.org> for the OpenSSL 43f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ project. The module is, however, dual licensed under OpenSSL and 53f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ CRYPTOGAMS licenses depending on where you obtain it. For further 63f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ details see http://www.openssl.org/~appro/cryptogams/. 73f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ ==================================================================== 83f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 93f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ AES for ARMv4 103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 113f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ January 2007. 123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ 133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ Code uses single 1K S-box and is >2 times faster than code generated 143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ by gcc-3.4.1. This is thanks to unique feature of ARMv4 ISA, which 153f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ allows to merge logical or arithmetic operation with shift or rotate 163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ in one instruction and emit combined result every cycle. The module 173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ is endian-neutral. The performance is ~42 cycles/byte for 128-bit 183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ key [on single-issue Xscale PXA250 core]. 193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ May 2007. 213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ 223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ AES_set_[en|de]crypt_key is added. 233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ July 2010. 253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ 263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ Rescheduling for dual-issue pipeline resulted in 12% improvement on 273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ Cortex A8 core and ~25 cycles per byte processed with 128-bit key. 283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ February 2011. 303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ 313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ Profiler-assisted and platform-specific optimization resulted in 16% 323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ improvement on Cortex A8 core and ~21.5 cycles per byte. 333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#ifndef __KERNEL__ 353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root# include "arm_arch.h" 363f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root# define __ARM_ARCH__ __LINUX_ARM_ARCH__ 383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.text 413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__<7 423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.code 32 433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.syntax unified 453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root# ifdef __thumb2__ 463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.thumb 473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root# else 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.code 32 493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root# endif 503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type AES_Te,%object 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_Te: 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594 81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3 83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a 84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504 85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163 86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d 87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f 88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739 89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47 90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395 91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e 96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6 98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b 99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7 100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0 101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25 102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818 103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72 104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651 105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21 106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9 111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133 112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7 113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920 114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a 115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17 116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8 117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11 118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a 119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ Te4[256] 120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5 121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76 122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0 123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0 124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc 125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15 126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a 127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75 128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0 129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84 130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b 131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf 132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85 133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8 134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5 135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2 136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17 137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73 138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88 139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb 140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c 141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79 142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9 143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08 144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6 145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a 146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e 147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e 148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94 149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf 150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ rcon[] 153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x01000000, 0x02000000, 0x04000000, 0x08000000 154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x10000000, 0x20000000, 0x40000000, 0x80000000 155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x1B000000, 0x36000000, 0, 0, 0, 0, 0, 0 156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size AES_Te,.-AES_Te 157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ void AES_encrypt(const unsigned char *in, unsigned char *out, 159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ const AES_KEY *key) { 160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global AES_encrypt 161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type AES_encrypt,%function 162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_encrypt: 1643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__<7 165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r3,pc,#8 @ AES_encrypt 1663f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 1673f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root adr r3,AES_encrypt 1683f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stmdb sp!,{r1,r4-r12,lr} 170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,r0 @ inp 171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r11,r2 172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r10,r3,#AES_encrypt-AES_Te @ Te 173392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r0,[r12,#3] @ load input data in endian-neutral 175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#2] @ manner... 176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#1] 177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#0] 178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r0,r0,r4,lsl#8 179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r1,[r12,#7] 18043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r5,lsl#16 181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#6] 18243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r6,lsl#24 183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#5] 184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#4] 185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r1,r1,r4,lsl#8 186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r2,[r12,#11] 18743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r5,lsl#16 188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#10] 18943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r6,lsl#24 190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#9] 191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#8] 192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r2,r2,r4,lsl#8 193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r3,[r12,#15] 19443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r5,lsl#16 195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#14] 19643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r6,lsl#24 197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#13] 198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#12] 199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r4,lsl#8 200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r5,lsl#16 201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r6,lsl#24 202392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 203392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r0,[r12,#0] 204392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r1,[r12,#4] 205392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r2,[r12,#8] 206392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r12,#12] 207392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 208392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 209392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 210392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 211392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 212392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 213392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bl _armv4_AES_encrypt 215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r12,[sp],#4 @ pop out 217392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7 218392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 219392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 220392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 221392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 222392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 223392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 224392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r0,[r12,#0] 225392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r1,[r12,#4] 226392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r2,[r12,#8] 227392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r3,[r12,#12] 228392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r0,lsr#24 @ write output in endian-neutral 230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r0,lsr#16 @ manner... 231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r0,lsr#8 232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#0] 233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#1] 234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r1,lsr#24 23543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#2] 236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r1,lsr#16 23743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r0,[r12,#3] 238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r1,lsr#8 239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#4] 240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#5] 241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r2,lsr#24 24243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#6] 243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r2,lsr#16 24443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r1,[r12,#7] 245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r2,lsr#8 246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#8] 247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#9] 248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r3,lsr#24 24943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#10] 250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r3,lsr#16 25143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r2,[r12,#11] 252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r3,lsr#8 253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#12] 254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#13] 255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r6,[r12,#14] 256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r3,[r12,#15] 257392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 258392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5 259392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldmia sp!,{r4-r12,pc} 260392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldmia sp!,{r4-r12,lr} 262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project tst lr,#1 263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq pc,lr @ be binary compatible with V4, yet 264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project .word 0xe12fff1e @ interoperable with Thumb ISA:-) 265392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size AES_encrypt,.-AES_encrypt 267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type _armv4_AES_encrypt,%function 269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 2 270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project_armv4_AES_encrypt: 271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str lr,[sp,#-4]! @ push lr 27243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldmia r11!,{r4-r7} 273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r4 27443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r12,[r11,#240-16] 275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r5 276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r6 277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r3,r7 278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r12,r12,#1 279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 28143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r7,lr,r0 282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r0,lsr#8 283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r0,lsr#16 284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r0,r0,lsr#24 28543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Lenc_loop: 286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r4,[r10,r7,lsl#2] @ Te3[s0>>0] 287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r1,lsr#16 @ i0 28843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,r8,lsl#2] @ Te2[s0>>8] 289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r1 29043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,r9,lsl#2] @ Te1[s0>>16] 291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r1,lsr#8 29243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r0,[r10,r0,lsl#2] @ Te0[s0>>24] 293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r1,r1,lsr#24 29443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Te1[s1>>16] 296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r8,[r10,r8,lsl#2] @ Te3[s1>>0] 297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Te2[s1>>8] 298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#8 29943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r1,[r10,r1,lsl#2] @ Te0[s1>>24] 300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r2,lsr#8 @ i0 30143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r5,r5,r8,ror#8 302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r2,lsr#16 @ i1 30343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r6,r9,ror#8 304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r2 305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Te2[s2>>8] 306392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r1,r1,r4,ror#24 307392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r10,r8,lsl#2] @ Te1[s2>>16] 30843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r2,r2,lsr#24 30943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Te3[s2>>0] 311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#16 31243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r2,[r10,r2,lsl#2] @ Te0[s2>>24] 313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3 @ i0 31443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r8,ror#8 315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r3,lsr#8 @ i1 31643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r6,r9,ror#16 317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r3,lsr#16 @ i2 318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Te3[s3>>0] 319392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r2,r2,r5,ror#16 320392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r10,r8,lsl#2] @ Te2[s3>>8] 32143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r3,r3,lsr#24 32243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Te1[s3>>16] 324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#24 32543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r7,[r11],#16 326392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r1,r1,r8,ror#16 327392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r10,r3,lsl#2] @ Te0[s3>>24] 328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r9,ror#8 32943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#-12] 330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r3,r6,ror#8 331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 33243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r11,#-8] 33343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r0,r0,r7 33443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r11,#-4] 33543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r7,lr,r0 33643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r4 33743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r0,lsr#8 33843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r5 33943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r0,lsr#16 34043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r6 34143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r0,r0,lsr#24 342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Lenc_loop 345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r10,r10,#2 347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r10,r7,lsl#2] @ Te4[s0>>0] 349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r1,lsr#16 @ i0 35043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r5,[r10,r8,lsl#2] @ Te4[s0>>8] 351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r1 35243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r6,[r10,r9,lsl#2] @ Te4[s0>>16] 353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r1,lsr#8 35443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r0,[r10,r0,lsl#2] @ Te4[s0>>24] 355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r1,r1,lsr#24 35643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7,lsl#2] @ Te4[s1>>16] 358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8,lsl#2] @ Te4[s1>>0] 359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r10,r9,lsl#2] @ Te4[s1>>8] 360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r7,r0,lsl#8 36143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r1,[r10,r1,lsl#2] @ Te4[s1>>24] 362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r2,lsr#8 @ i0 36343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r5,r8,r5,lsl#8 364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r2,lsr#16 @ i1 36543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r9,r6,lsl#8 366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r2 367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7,lsl#2] @ Te4[s2>>8] 368392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r1,r4,r1,lsl#24 369392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r8,[r10,r8,lsl#2] @ Te4[s2>>16] 37043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r2,r2,lsr#24 37143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r10,r9,lsl#2] @ Te4[s2>>0] 373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r7,r0,lsl#8 37443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r2,[r10,r2,lsl#2] @ Te4[s2>>24] 375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3 @ i0 37643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r8,lsl#16 377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r3,lsr#8 @ i1 37843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r9,r6,lsl#8 379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r3,lsr#16 @ i2 380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7,lsl#2] @ Te4[s3>>0] 381392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r2,r5,r2,lsl#24 382392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r8,[r10,r8,lsl#2] @ Te4[s3>>8] 38343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r3,r3,lsr#24 38443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r10,r9,lsl#2] @ Te4[s3>>16] 386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r7,r0,lsl#8 38743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r7,[r11,#0] 388392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r3,[r10,r3,lsl#2] @ Te4[s3>>24] 389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r8,lsl#8 39043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#4] 391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r9,lsl#16 39243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r11,#8] 393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r6,r3,lsl#24 39443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r11,#12] 395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 39643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r0,r0,r7 39743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r4 39843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r5 39943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r6 400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r10,r10,#2 40243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr pc,[sp],#4 @ pop and return 403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size _armv4_AES_encrypt,.-_armv4_AES_encrypt 404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 405392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.global private_AES_set_encrypt_key 406392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.type private_AES_set_encrypt_key,%function 407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 408392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromprivate_AES_set_encrypt_key: 409a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom_armv4_AES_set_encrypt_key: 4103f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__<7 411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r3,pc,#8 @ AES_set_encrypt_key 4123f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 4133f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root adr r3,private_AES_set_encrypt_key 4143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r0,#0 4163f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__>=7 4173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root itt eq @ Thumb2 thing, sanity check in ARM 4183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq r0,#-1 420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Labrt 421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r2,#0 4223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__>=7 4233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root itt eq @ Thumb2 thing, sanity check in ARM 4243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq r0,#-1 426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Labrt 427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r1,#128 429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Lok 430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r1,#192 431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Lok 432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r1,#256 4333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__>=7 4343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root itt ne @ Thumb2 thing, sanity check in ARM 4353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project movne r0,#-1 437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Labrt 438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lok: stmdb sp!,{r4-r12,lr} 440a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom sub r10,r3,#_armv4_AES_set_encrypt_key-AES_Te-1024 @ Te4 441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,r0 @ inp 443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,r1 @ bits 444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r11,r2 @ key 445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 446392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r0,[r12,#3] @ load input data in endian-neutral 448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#2] @ manner... 449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#1] 450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#0] 451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r0,r0,r4,lsl#8 452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r1,[r12,#7] 45343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r5,lsl#16 454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#6] 45543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r6,lsl#24 456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#5] 457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#4] 458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r1,r1,r4,lsl#8 459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r2,[r12,#11] 46043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r5,lsl#16 461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#10] 46243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r6,lsl#24 463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#9] 464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#8] 465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r2,r2,r4,lsl#8 466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r3,[r12,#15] 46743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r5,lsl#16 468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#14] 46943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r6,lsl#24 470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#13] 471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#12] 472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r4,lsl#8 473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r0,[r11],#16 47443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r3,r3,r5,lsl#16 475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r1,[r11,#-12] 47643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r3,r3,r6,lsl#24 477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r2,[r11,#-8] 478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r3,[r11,#-4] 479392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 480392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r0,[r12,#0] 481392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r1,[r12,#4] 482392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r2,[r12,#8] 483392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r12,#12] 484392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 485392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 486392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 487392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 488392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 489392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 490392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r0,[r11],#16 491392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r1,[r11,#-12] 492392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r2,[r11,#-8] 493392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r3,[r11,#-4] 494392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq lr,#128 497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Lnot128 498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#10 499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r12,[r11,#240-16] 500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r6,r10,#256 @ rcon 501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L128_loop: 504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r5,lr,r3,lsr#24 505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3,lsr#16 506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r10,r5] 50743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r3,lsr#8 508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] 50943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r3 510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] 511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r7,lsl#24 51243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] 513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r8,lsl#16 51443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r6],#4 @ rcon[i++] 515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r9,lsl#8 516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r5,r5,r4 517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r5 @ rk[4]=rk[0]^... 518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r0 @ rk[5]=rk[1]^rk[4] 519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r0,[r11],#16 52043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r1 @ rk[6]=rk[2]^rk[5] 521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r1,[r11,#-12] 52243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r2 @ rk[7]=rk[3]^rk[6] 523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r2,[r11,#-8] 524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 52543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom str r3,[r11,#-4] 526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .L128_loop 527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r2,r11,#176 528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project b .Ldone 529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lnot128: 531392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r12,#19] 533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#18] 534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#17] 535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#16] 536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r8,r8,r4,lsl#8 537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r12,#23] 53843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r8,r8,r5,lsl#16 539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#22] 54043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r8,r8,r6,lsl#24 541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#21] 542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#20] 543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r9,r9,r4,lsl#8 544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r9,r9,r5,lsl#16 545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r8,[r11],#8 54643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r9,r9,r6,lsl#24 547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r9,[r11,#-4] 548392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 549392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r12,#16] 550392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r9,[r12,#20] 551392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 552392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r8,r8 553392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r9,r9 554392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 555392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r8,[r11],#8 556392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r9,[r11,#-4] 557392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq lr,#192 560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Lnot192 561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#12 562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r12,[r11,#240-24] 563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r6,r10,#256 @ rcon 564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#8 566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L192_loop: 568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r5,lr,r9,lsr#24 569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r9,lsr#16 570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r10,r5] 57143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r9,lsr#8 572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] 57343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r9 574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] 575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r7,lsl#24 57643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] 577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r8,lsl#16 57843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r6],#4 @ rcon[i++] 579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r9,lsl#8 580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r9,r5,r4 581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r9 @ rk[6]=rk[0]^... 582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r0 @ rk[7]=rk[1]^rk[6] 583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r0,[r11],#24 58443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r1 @ rk[8]=rk[2]^rk[7] 585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r1,[r11,#-20] 58643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r2 @ rk[9]=rk[3]^rk[8] 587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r2,[r11,#-16] 588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 58943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom str r3,[r11,#-12] 5903f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__>=7 5913f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root itt eq @ Thumb2 thing, sanity check in ARM 5923f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subeq r2,r11,#216 594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Ldone 595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r11,#-32] 597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r8,[r11,#-28] 598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r7,r7,r3 @ rk[10]=rk[4]^rk[9] 599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r9,r8,r7 @ rk[11]=rk[5]^rk[10] 600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r7,[r11,#-8] 601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r9,[r11,#-4] 602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project b .L192_loop 603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lnot192: 605392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r12,#27] 607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#26] 608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#25] 609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#24] 610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r8,r8,r4,lsl#8 611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r12,#31] 61243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r8,r8,r5,lsl#16 613656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#30] 61443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r8,r8,r6,lsl#24 615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#29] 616656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#28] 617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r9,r9,r4,lsl#8 618656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r9,r9,r5,lsl#16 619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r8,[r11],#8 62043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r9,r9,r6,lsl#24 621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r9,[r11,#-4] 622392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 623392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r12,#24] 624392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r9,[r12,#28] 625392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 626392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r8,r8 627392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r9,r9 628392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 629392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r8,[r11],#8 630392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r9,[r11,#-4] 631392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 633656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#14 634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r12,[r11,#240-32] 635656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r6,r10,#256 @ rcon 636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#7 638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L256_loop: 640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r5,lr,r9,lsr#24 641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r9,lsr#16 642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r10,r5] 64343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r9,lsr#8 644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] 64543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r9 646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] 647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r7,lsl#24 64843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] 649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r8,lsl#16 65043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r6],#4 @ rcon[i++] 651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r9,lsl#8 652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r9,r5,r4 653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r9 @ rk[8]=rk[0]^... 654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r0 @ rk[9]=rk[1]^rk[8] 655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r0,[r11],#32 65643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r1 @ rk[10]=rk[2]^rk[9] 657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r1,[r11,#-28] 65843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r2 @ rk[11]=rk[3]^rk[10] 659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r2,[r11,#-24] 660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 66143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom str r3,[r11,#-20] 6623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__>=7 6633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root itt eq @ Thumb2 thing, sanity check in ARM 6643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subeq r2,r11,#256 666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Ldone 667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r5,lr,r3 669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3,lsr#8 670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r10,r5] 67143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r3,lsr#16 672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] 67343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r3,lsr#24 674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] 675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r7,lsl#8 67643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] 677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r8,lsl#16 67843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#-48] 679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r9,lsl#24 680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r11,#-44] 682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r8,[r11,#-40] 683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r5 @ rk[12]=rk[4]^... 68443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r9,[r11,#-36] 685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r7,r7,r4 @ rk[13]=rk[5]^rk[12] 686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r4,[r11,#-16] 68743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r8,r8,r7 @ rk[14]=rk[6]^rk[13] 688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r7,[r11,#-12] 68943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r9,r9,r8 @ rk[15]=rk[7]^rk[14] 690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r8,[r11,#-8] 691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r9,[r11,#-4] 692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project b .L256_loop 693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 6943f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 2 695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Ldone: mov r0,#0 696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldmia sp!,{r4-r12,lr} 6973f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Labrt: 6983f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__>=5 6993f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bx lr @ .word 0xe12fff1e 7003f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 7013f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root tst lr,#1 702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq pc,lr @ be binary compatible with V4, yet 703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project .word 0xe12fff1e @ interoperable with Thumb ISA:-) 7043f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 705392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.size private_AES_set_encrypt_key,.-private_AES_set_encrypt_key 706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 707392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.global private_AES_set_decrypt_key 708392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.type private_AES_set_decrypt_key,%function 709656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 710392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromprivate_AES_set_decrypt_key: 711656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str lr,[sp,#-4]! @ push lr 712a1a5710c055e139ea00e785f9eb55b3af3e4dab1Brian Carlstrom bl _armv4_AES_set_encrypt_key 713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r0,#0 7143f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr lr,[sp],#4 @ pop lr 715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Labrt 716656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 7173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root mov r0,r2 @ AES_set_encrypt_key preserves r2, 7183f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root mov r1,r2 @ which is AES_KEY *key 7193f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root b _armv4_AES_set_enc2dec_key 7203f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.size private_AES_set_decrypt_key,.-private_AES_set_decrypt_key 7213f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 7223f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root@ void AES_set_enc2dec_key(const AES_KEY *inp,AES_KEY *out) 7233f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.global AES_set_enc2dec_key 7243f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.type AES_set_enc2dec_key,%function 7253f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.align 5 7263f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny RootAES_set_enc2dec_key: 7273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root_armv4_AES_set_enc2dec_key: 7283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root stmdb sp!,{r4-r12,lr} 7293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root 7303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr r12,[r0,#240] 7313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root mov r7,r0 @ input 7323f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add r8,r0,r12,lsl#4 7333f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root mov r11,r1 @ ouput 7343f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add r10,r1,r12,lsl#4 7353f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r12,[r1,#240] 736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 7373f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.Linv: ldr r0,[r7],#16 7383f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr r1,[r7,#-12] 7393f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr r2,[r7,#-8] 7403f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr r3,[r7,#-4] 7413f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr r4,[r8],#-16 7423f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr r5,[r8,#16+4] 7433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr r6,[r8,#16+8] 7443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr r9,[r8,#16+12] 7453f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r0,[r10],#-16 7463f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r1,[r10,#16+4] 7473f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r2,[r10,#16+8] 7483f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r3,[r10,#16+12] 7493f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r4,[r11],#16 7503f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r5,[r11,#-12] 7513f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r6,[r11,#-8] 7523f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r9,[r11,#-4] 7533f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root teq r7,r8 7543f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root bne .Linv 755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 7563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldr r0,[r7] 757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r1,[r7,#4] 758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r2,[r7,#8] 759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r3,[r7,#12] 7603f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r0,[r11] 7613f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r1,[r11,#4] 7623f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r2,[r11,#8] 7633f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root str r3,[r11,#12] 7643f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root sub r11,r11,r12,lsl#3 765656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r0,[r11,#16]! @ prefetch tp1 766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r7,#0x80 767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r8,#0x1b 768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r7,r7,#0x8000 769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r8,r8,#0x1b00 770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r7,r7,r7,lsl#16 771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r8,r8,r8,lsl#16 772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r12,r12,#1 773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mvn r9,r7 774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,r12,lsl#2 @ (rounds-1)*4 775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lmix: and r4,r0,r7 777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r1,r0,r9 778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r4,r4,r4,lsr#7 779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r4,r8 780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r4,r1,lsl#1 @ tp2 781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r1,r7 783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r2,r1,r9 784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r4,r4,r4,lsr#7 785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r4,r8 786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r4,r2,lsl#1 @ tp4 787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r2,r7 789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r3,r2,r9 790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r4,r4,r4,lsr#7 791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r4,r8 792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r4,r3,lsl#1 @ tp8 793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r1,r2 795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r5,r0,r3 @ tp9 796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r3 @ tpe 797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r1,ror#24 798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r5,ror#24 @ ^= ROTATE(tpb=tp9^tp2,8) 799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r2,ror#16 800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r5,ror#16 @ ^= ROTATE(tpd=tp9^tp4,16) 801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r5,ror#8 @ ^= ROTATE(tp9,24) 802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r0,[r11,#4] @ prefetch tp1 804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r4,[r11],#4 805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Lmix 807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r0,#0 809392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5 810392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldmia sp!,{r4-r12,pc} 811392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldmia sp!,{r4-r12,lr} 813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project tst lr,#1 814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq pc,lr @ be binary compatible with V4, yet 815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project .word 0xe12fff1e @ interoperable with Thumb ISA:-) 816392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 8173f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root.size AES_set_enc2dec_key,.-AES_set_enc2dec_key 818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type AES_Td,%object 820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_Td: 822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96 823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393 824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25 825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f 826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1 827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6 828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da 829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844 830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd 831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4 832656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45 833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94 834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7 835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a 836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5 837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c 838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1 839656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a 840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75 841656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051 842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46 843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff 844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77 845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb 846656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000 847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e 848656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927 849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a 850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e 851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16 852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d 853656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8 854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd 855656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34 856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163 857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120 858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d 859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0 860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422 861656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef 862656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36 863656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4 864656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662 865656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5 866656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3 867656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b 868656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8 869656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6 870656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6 871656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0 872656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815 873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f 874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df 875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f 876656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e 877656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713 878656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89 879656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c 880656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf 881656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86 882656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f 883656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541 884656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190 885656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742 886656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ Td4[256] 887656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38 888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb 889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87 890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb 891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d 892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e 893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2 894656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25 895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16 896656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92 897656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda 898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84 899656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a 900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06 901656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02 902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b 903656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea 904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73 905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85 906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e 907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89 908656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b 909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20 910656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4 911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31 912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f 913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d 914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef 915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0 916656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 917656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 918656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d 919656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size AES_Td,.-AES_Td 920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ void AES_decrypt(const unsigned char *in, unsigned char *out, 922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ const AES_KEY *key) { 923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global AES_decrypt 924656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type AES_decrypt,%function 925656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_decrypt: 9273f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#if __ARM_ARCH__<7 928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r3,pc,#8 @ AES_decrypt 9293f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#else 9303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root adr r3,AES_decrypt 9313f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root#endif 932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stmdb sp!,{r1,r4-r12,lr} 933656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,r0 @ inp 934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r11,r2 935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r10,r3,#AES_decrypt-AES_Td @ Td 936392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r0,[r12,#3] @ load input data in endian-neutral 938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#2] @ manner... 939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#1] 940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#0] 941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r0,r0,r4,lsl#8 942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r1,[r12,#7] 94343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r5,lsl#16 944656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#6] 94543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r6,lsl#24 946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#5] 947656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#4] 948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r1,r1,r4,lsl#8 949656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r2,[r12,#11] 95043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r5,lsl#16 951656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#10] 95243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r6,lsl#24 953656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#9] 954656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#8] 955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r2,r2,r4,lsl#8 956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r3,[r12,#15] 95743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r5,lsl#16 958656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#14] 95943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r6,lsl#24 960656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#13] 961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#12] 962656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r4,lsl#8 963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r5,lsl#16 964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r6,lsl#24 965392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 966392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r0,[r12,#0] 967392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r1,[r12,#4] 968392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r2,[r12,#8] 969392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r12,#12] 970392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 971392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 972392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 973392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 974392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 975392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 976392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bl _armv4_AES_decrypt 978656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 979656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r12,[sp],#4 @ pop out 980392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7 981392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 982392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 983392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 984392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 985392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 986392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 987392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r0,[r12,#0] 988392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r1,[r12,#4] 989392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r2,[r12,#8] 990392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r3,[r12,#12] 991392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 992656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r0,lsr#24 @ write output in endian-neutral 993656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r0,lsr#16 @ manner... 994656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r0,lsr#8 995656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#0] 996656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#1] 997656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r1,lsr#24 99843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#2] 999656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r1,lsr#16 100043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r0,[r12,#3] 1001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r1,lsr#8 1002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#4] 1003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#5] 1004656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r2,lsr#24 100543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#6] 1006656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r2,lsr#16 100743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r1,[r12,#7] 1008656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r2,lsr#8 1009656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#8] 1010656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#9] 1011656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r3,lsr#24 101243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#10] 1013656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r3,lsr#16 101443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r2,[r12,#11] 1015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r3,lsr#8 1016656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#12] 1017656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#13] 1018656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r6,[r12,#14] 1019656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r3,[r12,#15] 1020392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 1021392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5 1022392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldmia sp!,{r4-r12,pc} 1023392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 1024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldmia sp!,{r4-r12,lr} 1025656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project tst lr,#1 1026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq pc,lr @ be binary compatible with V4, yet 1027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project .word 0xe12fff1e @ interoperable with Thumb ISA:-) 1028392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 1029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size AES_decrypt,.-AES_decrypt 1030656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1031656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type _armv4_AES_decrypt,%function 1032656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 2 1033656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project_armv4_AES_decrypt: 1034656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str lr,[sp,#-4]! @ push lr 103543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldmia r11!,{r4-r7} 1036656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r4 103743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r12,[r11,#240-16] 1038656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r5 1039656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r6 1040656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r3,r7 1041656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r12,r12,#1 1042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 1043656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r0,lsr#16 1045656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r0,lsr#8 1046656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r0 1047656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r0,r0,lsr#24 104843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Ldec_loop: 1049656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r4,[r10,r7,lsl#2] @ Td1[s0>>16] 1050656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r1 @ i0 105143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,r8,lsl#2] @ Td2[s0>>8] 1052656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r1,lsr#16 105343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,r9,lsl#2] @ Td3[s0>>0] 1054656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r1,lsr#8 105543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r0,[r10,r0,lsl#2] @ Td0[s0>>24] 1056656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r1,r1,lsr#24 105743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 1058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Td3[s1>>0] 1059656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r8,[r10,r8,lsl#2] @ Td1[s1>>16] 1060656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Td2[s1>>8] 1061656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#24 106243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r1,[r10,r1,lsl#2] @ Td0[s1>>24] 1063656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r2,lsr#8 @ i0 106443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r5,r8,r5,ror#8 1065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r2 @ i1 106643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r9,r6,ror#8 1067656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r2,lsr#16 1068656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Td2[s2>>8] 1069392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r1,r1,r4,ror#8 1070392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r10,r8,lsl#2] @ Td3[s2>>0] 107143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r2,r2,lsr#24 107243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 1073656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Td1[s2>>16] 1074656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#16 107543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r2,[r10,r2,lsl#2] @ Td0[s2>>24] 1076656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3,lsr#16 @ i0 107743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r8,ror#24 1078656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r3,lsr#8 @ i1 107943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r9,r6,ror#8 1080656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r3 @ i2 1081656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Td1[s3>>16] 1082392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r2,r2,r5,ror#8 1083392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r10,r8,lsl#2] @ Td2[s3>>8] 108443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r3,r3,lsr#24 108543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 1086656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Td3[s3>>0] 1087656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#8 1088392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r7,[r11],#16 1089656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r8,ror#16 1090392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r10,r3,lsl#2] @ Td0[s3>>24] 1091656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r9,ror#24 1092656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 109343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#-12] 109443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r0,r0,r7 1095392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r5,[r11,#-8] 1096392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r3,r3,r6,ror#8 109743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r11,#-4] 109843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r7,lr,r0,lsr#16 109943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r4 110043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r0,lsr#8 110143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r5 110243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r0 110343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r6 110443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r0,r0,lsr#24 1105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 1107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Ldec_loop 1108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r10,r10,#1024 1110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 111143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,#0] @ prefetch Td4 111243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,#32] 111343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r10,#64] 111443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,#96] 111543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,#128] 111643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r10,#160] 111743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,#192] 111843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,#224] 1119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 112043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r0,[r10,r0] @ Td4[s0>>24] 1121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r10,r7] @ Td4[s0>>16] 1122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r1 @ i0 112343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r5,[r10,r8] @ Td4[s0>>8] 1124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r1,lsr#16 112543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r6,[r10,r9] @ Td4[s0>>0] 1126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r1,lsr#8 112743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 11283f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add r1,r10,r1,lsr#24 1129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] @ Td4[s1>>0] 11303f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldrb r1,[r1] @ Td4[s1>>24] 1131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] @ Td4[s1>>16] 1132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r7,r0,lsl#24 113343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] @ Td4[s1>>8] 1134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r4,r1,lsl#8 1135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r2,lsr#8 @ i0 113643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r5,r5,r8,lsl#8 1137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r2 @ i1 1138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] @ Td4[s2>>8] 1139392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r6,r6,r9,lsl#8 1140392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r8,[r10,r8] @ Td4[s2>>0] 114143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r2,lsr#16 114243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 11433f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add r2,r10,r2,lsr#24 11443f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldrb r2,[r2] @ Td4[s2>>24] 1145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,lsl#8 114643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] @ Td4[s2>>16] 1147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r8,r1,lsl#16 1148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3,lsr#16 @ i0 114943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r5,r2,lsl#16 1150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r3,lsr#8 @ i1 1151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] @ Td4[s3>>16] 1152392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r6,r6,r9,lsl#16 1153392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r8,[r10,r8] @ Td4[s3>>8] 115443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r3 @ i2 115543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 11563f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root add r3,r10,r3,lsr#24 1157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r10,r9] @ Td4[s3>>0] 11583f9e6ada2c9f7183a41081263585e6a70bbd9f59Kenny Root ldrb r3,[r3] @ Td4[s3>>24] 1159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,lsl#16 116043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r7,[r11,#0] 1161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r8,lsl#8 116243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#4] 1163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r9,r2,lsl#8 116443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r11,#8] 1165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r6,r3,lsl#24 116643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r11,#12] 1167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 116843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r0,r0,r7 116943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r4 117043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r5 117143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r6 1172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r10,r10,#1024 117443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr pc,[sp],#4 @ pop and return 1175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size _armv4_AES_decrypt,.-_armv4_AES_decrypt 1176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.asciz "AES for ARMv4, CRYPTOGAMS by <appro@openssl.org>" 1177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 2 1178