aes-armv4.S revision 392aa7cc7d2b122614c5393c3e357da07fd07af3
1392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#include "arm_arch.h" 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.text 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.code 32 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type AES_Te,%object 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_Te: 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8fcaca45, 0x1f82829d, 0x89c9c940, 0xfa7d7d87 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x239c9cbf, 0x53a4a4f7, 0xe4727296, 0x9bc0c05b 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x6834345c, 0x51a5a5f4, 0xd1e5e534, 0xf9f1f108 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x30181828, 0x379696a1, 0x0a05050f, 0x2f9a9ab5 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x1209091b, 0x1d83839e, 0x582c2c74, 0x341a1a2e 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x5229297b, 0xdde3e33e, 0x5e2f2f71, 0x13848497 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd46a6abe, 0x8dcbcb46, 0x67bebed9, 0x7239394b 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x864343c5, 0x9a4d4dd7, 0x66333355, 0x11858594 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa25151f3, 0x5da3a3fe, 0x804040c0, 0x058f8f8a 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x20101030, 0xe5ffff1a, 0xfdf3f30e, 0xbfd2d26d 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x93c4c457, 0x55a7a7f2, 0xfc7e7e82, 0x7a3d3d47 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x44222266, 0x542a2a7e, 0x3b9090ab, 0x0b888883 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xdbe0e03b, 0x64323256, 0x743a3a4e, 0x140a0a1e 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x399191a8, 0x319595a4, 0xd3e4e437, 0xf279798b 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd86c6cb4, 0xac5656fa, 0xf3f4f407, 0xcfeaea25 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x381c1c24, 0x57a6a6f1, 0x73b4b4c7, 0x97c6c651 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe0707090, 0x7c3e3e42, 0x71b5b5c4, 0xcc6666aa 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x17868691, 0x99c1c158, 0x3a1d1d27, 0x279e9eb9 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x2d9b9bb6, 0x3c1e1e22, 0x15878792, 0xc9e9e920 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x65bfbfda, 0xd7e6e631, 0x844242c6, 0xd06868b8 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ Te4[256] 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75 81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84 83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b 84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf 85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85 86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8 87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5 88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2 89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17 90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73 91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9 96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6 98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a 99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e 100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e 101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94 102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf 103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68 104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ rcon[] 106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x01000000, 0x02000000, 0x04000000, 0x08000000 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x10000000, 0x20000000, 0x40000000, 0x80000000 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x1B000000, 0x36000000, 0, 0, 0, 0, 0, 0 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size AES_Te,.-AES_Te 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ void AES_encrypt(const unsigned char *in, unsigned char *out, 112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ const AES_KEY *key) { 113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global AES_encrypt 114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type AES_encrypt,%function 115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_encrypt: 117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r3,pc,#8 @ AES_encrypt 118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stmdb sp!,{r1,r4-r12,lr} 119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,r0 @ inp 120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r11,r2 121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r10,r3,#AES_encrypt-AES_Te @ Te 122392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r0,[r12,#3] @ load input data in endian-neutral 124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#2] @ manner... 125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#1] 126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#0] 127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r0,r0,r4,lsl#8 128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r1,[r12,#7] 12943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r5,lsl#16 130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#6] 13143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r6,lsl#24 132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#5] 133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#4] 134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r1,r1,r4,lsl#8 135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r2,[r12,#11] 13643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r5,lsl#16 137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#10] 13843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r6,lsl#24 139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#9] 140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#8] 141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r2,r2,r4,lsl#8 142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r3,[r12,#15] 14343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r5,lsl#16 144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#14] 14543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r6,lsl#24 146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#13] 147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#12] 148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r4,lsl#8 149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r5,lsl#16 150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r6,lsl#24 151392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 152392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r0,[r12,#0] 153392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r1,[r12,#4] 154392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r2,[r12,#8] 155392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r12,#12] 156392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 157392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 158392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 159392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 160392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 161392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 162392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bl _armv4_AES_encrypt 164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r12,[sp],#4 @ pop out 166392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7 167392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 168392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 169392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 170392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 171392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 172392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 173392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r0,[r12,#0] 174392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r1,[r12,#4] 175392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r2,[r12,#8] 176392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r3,[r12,#12] 177392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r0,lsr#24 @ write output in endian-neutral 179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r0,lsr#16 @ manner... 180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r0,lsr#8 181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#0] 182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#1] 183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r1,lsr#24 18443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#2] 185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r1,lsr#16 18643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r0,[r12,#3] 187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r1,lsr#8 188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#4] 189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#5] 190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r2,lsr#24 19143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#6] 192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r2,lsr#16 19343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r1,[r12,#7] 194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r2,lsr#8 195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#8] 196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#9] 197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r3,lsr#24 19843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#10] 199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r3,lsr#16 20043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r2,[r12,#11] 201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r3,lsr#8 202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#12] 203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#13] 204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r6,[r12,#14] 205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r3,[r12,#15] 206392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 207392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5 208392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldmia sp!,{r4-r12,pc} 209392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldmia sp!,{r4-r12,lr} 211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project tst lr,#1 212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq pc,lr @ be binary compatible with V4, yet 213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project .word 0xe12fff1e @ interoperable with Thumb ISA:-) 214392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size AES_encrypt,.-AES_encrypt 216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type _armv4_AES_encrypt,%function 218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 2 219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project_armv4_AES_encrypt: 220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str lr,[sp,#-4]! @ push lr 22143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldmia r11!,{r4-r7} 222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r4 22343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r12,[r11,#240-16] 224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r5 225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r6 226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r3,r7 227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r12,r12,#1 228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 23043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r7,lr,r0 231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r0,lsr#8 232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r0,lsr#16 233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r0,r0,lsr#24 23443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Lenc_loop: 235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r4,[r10,r7,lsl#2] @ Te3[s0>>0] 236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r1,lsr#16 @ i0 23743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,r8,lsl#2] @ Te2[s0>>8] 238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r1 23943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,r9,lsl#2] @ Te1[s0>>16] 240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r1,lsr#8 24143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r0,[r10,r0,lsl#2] @ Te0[s0>>24] 242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r1,r1,lsr#24 24343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Te1[s1>>16] 245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r8,[r10,r8,lsl#2] @ Te3[s1>>0] 246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Te2[s1>>8] 247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#8 24843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r1,[r10,r1,lsl#2] @ Te0[s1>>24] 249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r2,lsr#8 @ i0 25043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r5,r5,r8,ror#8 251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r2,lsr#16 @ i1 25243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r6,r9,ror#8 253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r2 254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Te2[s2>>8] 255392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r1,r1,r4,ror#24 256392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r10,r8,lsl#2] @ Te1[s2>>16] 25743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r2,r2,lsr#24 25843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Te3[s2>>0] 260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#16 26143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r2,[r10,r2,lsl#2] @ Te0[s2>>24] 262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3 @ i0 26343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r8,ror#8 264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r3,lsr#8 @ i1 26543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r6,r9,ror#16 266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r3,lsr#16 @ i2 267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Te3[s3>>0] 268392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r2,r2,r5,ror#16 269392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r10,r8,lsl#2] @ Te2[s3>>8] 27043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r3,r3,lsr#24 27143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Te1[s3>>16] 273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#24 27443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r7,[r11],#16 275392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r1,r1,r8,ror#16 276392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r10,r3,lsl#2] @ Te0[s3>>24] 277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r9,ror#8 27843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#-12] 279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r3,r6,ror#8 280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 28143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r11,#-8] 28243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r0,r0,r7 28343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r11,#-4] 28443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r7,lr,r0 28543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r4 28643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r0,lsr#8 28743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r5 28843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r0,lsr#16 28943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r6 29043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r0,r0,lsr#24 291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Lenc_loop 294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r10,r10,#2 296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r10,r7,lsl#2] @ Te4[s0>>0] 298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r1,lsr#16 @ i0 29943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r5,[r10,r8,lsl#2] @ Te4[s0>>8] 300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r1 30143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r6,[r10,r9,lsl#2] @ Te4[s0>>16] 302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r1,lsr#8 30343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r0,[r10,r0,lsl#2] @ Te4[s0>>24] 304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r1,r1,lsr#24 30543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7,lsl#2] @ Te4[s1>>16] 307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8,lsl#2] @ Te4[s1>>0] 308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r10,r9,lsl#2] @ Te4[s1>>8] 309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r7,r0,lsl#8 31043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r1,[r10,r1,lsl#2] @ Te4[s1>>24] 311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r2,lsr#8 @ i0 31243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r5,r8,r5,lsl#8 313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r2,lsr#16 @ i1 31443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r9,r6,lsl#8 315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r2 316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7,lsl#2] @ Te4[s2>>8] 317392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r1,r4,r1,lsl#24 318392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r8,[r10,r8,lsl#2] @ Te4[s2>>16] 31943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r2,r2,lsr#24 32043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r10,r9,lsl#2] @ Te4[s2>>0] 322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r7,r0,lsl#8 32343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r2,[r10,r2,lsl#2] @ Te4[s2>>24] 324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3 @ i0 32543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r8,lsl#16 326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r3,lsr#8 @ i1 32743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r9,r6,lsl#8 328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r3,lsr#16 @ i2 329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7,lsl#2] @ Te4[s3>>0] 330392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r2,r5,r2,lsl#24 331392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r8,[r10,r8,lsl#2] @ Te4[s3>>8] 33243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r3,r3,lsr#24 33343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r10,r9,lsl#2] @ Te4[s3>>16] 335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r7,r0,lsl#8 33643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r7,[r11,#0] 337392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r3,[r10,r3,lsl#2] @ Te4[s3>>24] 338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r8,lsl#8 33943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#4] 340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r9,lsl#16 34143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r11,#8] 342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r6,r3,lsl#24 34343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r11,#12] 344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 34543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r0,r0,r7 34643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r4 34743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r5 34843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r6 349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r10,r10,#2 35143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr pc,[sp],#4 @ pop and return 352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size _armv4_AES_encrypt,.-_armv4_AES_encrypt 353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 354392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.global private_AES_set_encrypt_key 355392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.type private_AES_set_encrypt_key,%function 356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 357392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromprivate_AES_set_encrypt_key: 358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r3,pc,#8 @ AES_set_encrypt_key 359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r0,#0 360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq r0,#-1 361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Labrt 362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r2,#0 363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq r0,#-1 364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Labrt 365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r1,#128 367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Lok 368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r1,#192 369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Lok 370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r1,#256 371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project movne r0,#-1 372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Labrt 373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lok: stmdb sp!,{r4-r12,lr} 375392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom sub r10,r3,#private_AES_set_encrypt_key-AES_Te-1024 @ Te4 376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,r0 @ inp 378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,r1 @ bits 379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r11,r2 @ key 380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 381392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r0,[r12,#3] @ load input data in endian-neutral 383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#2] @ manner... 384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#1] 385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#0] 386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r0,r0,r4,lsl#8 387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r1,[r12,#7] 38843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r5,lsl#16 389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#6] 39043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r6,lsl#24 391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#5] 392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#4] 393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r1,r1,r4,lsl#8 394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r2,[r12,#11] 39543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r5,lsl#16 396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#10] 39743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r6,lsl#24 398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#9] 399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#8] 400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r2,r2,r4,lsl#8 401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r3,[r12,#15] 40243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r5,lsl#16 403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#14] 40443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r6,lsl#24 405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#13] 406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#12] 407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r4,lsl#8 408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r0,[r11],#16 40943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r3,r3,r5,lsl#16 410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r1,[r11,#-12] 41143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r3,r3,r6,lsl#24 412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r2,[r11,#-8] 413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r3,[r11,#-4] 414392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 415392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r0,[r12,#0] 416392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r1,[r12,#4] 417392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r2,[r12,#8] 418392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r12,#12] 419392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 420392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 421392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 422392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 423392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 424392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 425392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r0,[r11],#16 426392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r1,[r11,#-12] 427392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r2,[r11,#-8] 428392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r3,[r11,#-4] 429392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq lr,#128 432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Lnot128 433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#10 434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r12,[r11,#240-16] 435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r6,r10,#256 @ rcon 436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L128_loop: 439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r5,lr,r3,lsr#24 440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3,lsr#16 441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r10,r5] 44243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r3,lsr#8 443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] 44443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r3 445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] 446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r7,lsl#24 44743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] 448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r8,lsl#16 44943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r6],#4 @ rcon[i++] 450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r9,lsl#8 451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r5,r5,r4 452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r5 @ rk[4]=rk[0]^... 453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r0 @ rk[5]=rk[1]^rk[4] 454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r0,[r11],#16 45543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r1 @ rk[6]=rk[2]^rk[5] 456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r1,[r11,#-12] 45743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r2 @ rk[7]=rk[3]^rk[6] 458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r2,[r11,#-8] 459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 46043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom str r3,[r11,#-4] 461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .L128_loop 462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r2,r11,#176 463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project b .Ldone 464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lnot128: 466392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r12,#19] 468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#18] 469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#17] 470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#16] 471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r8,r8,r4,lsl#8 472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r12,#23] 47343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r8,r8,r5,lsl#16 474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#22] 47543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r8,r8,r6,lsl#24 476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#21] 477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#20] 478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r9,r9,r4,lsl#8 479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r9,r9,r5,lsl#16 480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r8,[r11],#8 48143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r9,r9,r6,lsl#24 482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r9,[r11,#-4] 483392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 484392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r12,#16] 485392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r9,[r12,#20] 486392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 487392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r8,r8 488392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r9,r9 489392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 490392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r8,[r11],#8 491392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r9,[r11,#-4] 492392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq lr,#192 495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Lnot192 496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#12 497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r12,[r11,#240-24] 498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r6,r10,#256 @ rcon 499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#8 501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L192_loop: 503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r5,lr,r9,lsr#24 504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r9,lsr#16 505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r10,r5] 50643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r9,lsr#8 507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] 50843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r9 509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] 510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r7,lsl#24 51143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] 512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r8,lsl#16 51343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r6],#4 @ rcon[i++] 514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r9,lsl#8 515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r9,r5,r4 516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r9 @ rk[6]=rk[0]^... 517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r0 @ rk[7]=rk[1]^rk[6] 518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r0,[r11],#24 51943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r1 @ rk[8]=rk[2]^rk[7] 520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r1,[r11,#-20] 52143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r2 @ rk[9]=rk[3]^rk[8] 522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r2,[r11,#-16] 523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 52443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom str r3,[r11,#-12] 525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subeq r2,r11,#216 526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Ldone 527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r11,#-32] 529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r8,[r11,#-28] 530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r7,r7,r3 @ rk[10]=rk[4]^rk[9] 531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r9,r8,r7 @ rk[11]=rk[5]^rk[10] 532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r7,[r11,#-8] 533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r9,[r11,#-4] 534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project b .L192_loop 535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lnot192: 537392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r12,#27] 539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#26] 540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#25] 541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#24] 542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r8,r8,r4,lsl#8 543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r12,#31] 54443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r8,r8,r5,lsl#16 545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#30] 54643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r8,r8,r6,lsl#24 547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#29] 548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#28] 549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r9,r9,r4,lsl#8 550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r9,r9,r5,lsl#16 551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r8,[r11],#8 55243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r9,r9,r6,lsl#24 553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r9,[r11,#-4] 554392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 555392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r12,#24] 556392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r9,[r12,#28] 557392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 558392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r8,r8 559392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r9,r9 560392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 561392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r8,[r11],#8 562392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r9,[r11,#-4] 563392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#14 566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r12,[r11,#240-32] 567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r6,r10,#256 @ rcon 568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,#7 570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.L256_loop: 572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r5,lr,r9,lsr#24 573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r9,lsr#16 574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r10,r5] 57543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r9,lsr#8 576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] 57743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r9 578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] 579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r7,lsl#24 58043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] 581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r8,lsl#16 58243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r6],#4 @ rcon[i++] 583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r9,lsl#8 584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r9,r5,r4 585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r9 @ rk[8]=rk[0]^... 586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r0 @ rk[9]=rk[1]^rk[8] 587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r0,[r11],#32 58843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r1 @ rk[10]=rk[2]^rk[9] 589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r1,[r11,#-28] 59043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r2 @ rk[11]=rk[3]^rk[10] 591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r2,[r11,#-24] 592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 59343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom str r3,[r11,#-20] 594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subeq r2,r11,#256 595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project beq .Ldone 596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r5,lr,r3 598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3,lsr#8 599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r10,r5] 60043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r3,lsr#16 601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] 60243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r3,lsr#24 603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] 604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r7,lsl#8 60543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] 606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r8,lsl#16 60743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#-48] 608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r5,r5,r9,lsl#24 609656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 610656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r11,#-44] 611656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r8,[r11,#-40] 612656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r5 @ rk[12]=rk[4]^... 61343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r9,[r11,#-36] 614656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r7,r7,r4 @ rk[13]=rk[5]^rk[12] 615656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r4,[r11,#-16] 61643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r8,r8,r7 @ rk[14]=rk[6]^rk[13] 617656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r7,[r11,#-12] 61843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r9,r9,r8 @ rk[15]=rk[7]^rk[14] 619656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r8,[r11,#-8] 620656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r9,[r11,#-4] 621656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project b .L256_loop 622656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 623656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Ldone: mov r0,#0 624656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldmia sp!,{r4-r12,lr} 625656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Labrt: tst lr,#1 626656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq pc,lr @ be binary compatible with V4, yet 627656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project .word 0xe12fff1e @ interoperable with Thumb ISA:-) 628392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.size private_AES_set_encrypt_key,.-private_AES_set_encrypt_key 629656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 630392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.global private_AES_set_decrypt_key 631392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.type private_AES_set_decrypt_key,%function 632656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 633392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstromprivate_AES_set_decrypt_key: 634656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str lr,[sp,#-4]! @ push lr 635392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom bl private_AES_set_encrypt_key 636656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r0,#0 637656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrne lr,[sp],#4 @ pop lr 638656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Labrt 639656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 640656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stmdb sp!,{r4-r12} 641656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 642656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r12,[r2,#240] @ AES_set_encrypt_key preserves r2, 643656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r11,r2 @ which is AES_KEY *key 644656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r7,r2 645656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r8,r2,r12,lsl#4 646656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 647656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Linv: ldr r0,[r7] 648656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r1,[r7,#4] 649656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r2,[r7,#8] 650656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r3,[r7,#12] 651656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r4,[r8] 652656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r5,[r8,#4] 653656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r6,[r8,#8] 654656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r8,#12] 655656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r0,[r8],#-16 656656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r1,[r8,#16+4] 657656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r2,[r8,#16+8] 658656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r3,[r8,#16+12] 659656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r4,[r7],#16 660656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r5,[r7,#-12] 661656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r6,[r7,#-8] 662656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r9,[r7,#-4] 663656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project teq r7,r8 664656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Linv 665656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r0,[r11,#16]! @ prefetch tp1 666656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r7,#0x80 667656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r8,#0x1b 668656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r7,r7,#0x8000 669656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r8,r8,#0x1b00 670656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r7,r7,r7,lsl#16 671656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r8,r8,r8,lsl#16 672656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r12,r12,#1 673656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mvn r9,r7 674656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,r12,lsl#2 @ (rounds-1)*4 675656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 676656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.Lmix: and r4,r0,r7 677656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r1,r0,r9 678656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r4,r4,r4,lsr#7 679656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r4,r8 680656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r4,r1,lsl#1 @ tp2 681656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 682656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r1,r7 683656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r2,r1,r9 684656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r4,r4,r4,lsr#7 685656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r4,r8 686656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r4,r2,lsl#1 @ tp4 687656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 688656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r2,r7 689656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r3,r2,r9 690656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r4,r4,r4,lsr#7 691656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r4,r4,r8 692656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r4,r3,lsl#1 @ tp8 693656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 694656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r1,r2 695656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r5,r0,r3 @ tp9 696656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r3 @ tpe 697656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r1,ror#24 698656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r5,ror#24 @ ^= ROTATE(tpb=tp9^tp2,8) 699656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r2,ror#16 700656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r5,ror#16 @ ^= ROTATE(tpd=tp9^tp4,16) 701656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r4,r4,r5,ror#8 @ ^= ROTATE(tp9,24) 702656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 703656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r0,[r11,#4] @ prefetch tp1 704656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str r4,[r11],#4 705656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 706656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Lmix 707656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 708656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r0,#0 709392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5 710392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldmia sp!,{r4-r12,pc} 711392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 712656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldmia sp!,{r4-r12,lr} 713656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project tst lr,#1 714656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq pc,lr @ be binary compatible with V4, yet 715656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project .word 0xe12fff1e @ interoperable with Thumb ISA:-) 716392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 717392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom.size private_AES_set_decrypt_key,.-private_AES_set_decrypt_key 718656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 719656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type AES_Td,%object 720656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 721656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_Td: 722656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96 723656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393 724656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x2030fa55, 0xad766df6, 0x88cc7691, 0xf5024c25 725656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x4fe5d7fc, 0xc52acbd7, 0x26354480, 0xb562a38f 726656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xdeb15a49, 0x25ba1b67, 0x45ea0e98, 0x5dfec0e1 727656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc32f7502, 0x814cf012, 0x8d4697a3, 0x6bd3f9c6 728656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x038f5fe7, 0x15929c95, 0xbf6d7aeb, 0x955259da 729656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd4be832d, 0x587421d3, 0x49e06929, 0x8ec9c844 730656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x75c2896a, 0xf48e7978, 0x99583e6b, 0x27b971dd 731656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xbee14fb6, 0xf088ad17, 0xc920ac66, 0x7dce3ab4 732656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x63df4a18, 0xe51a3182, 0x97513360, 0x62537f45 733656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xb16477e0, 0xbb6bae84, 0xfe81a01c, 0xf9082b94 734656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x70486858, 0x8f45fd19, 0x94de6c87, 0x527bf8b7 735656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xab73d323, 0x724b02e2, 0xe31f8f57, 0x6655ab2a 736656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xb2eb2807, 0x2fb5c203, 0x86c57b9a, 0xd33708a5 737656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x302887f2, 0x23bfa5b2, 0x02036aba, 0xed16825c 738656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8acf1c2b, 0xa779b492, 0xf307f2f0, 0x4e69e2a1 739656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x65daf4cd, 0x0605bed5, 0xd134621f, 0xc4a6fe8a 740656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x342e539d, 0xa2f355a0, 0x058ae132, 0xa4f6eb75 741656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0b83ec39, 0x4060efaa, 0x5e719f06, 0xbd6e1051 742656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x3e218af9, 0x96dd063d, 0xdd3e05ae, 0x4de6bd46 743656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x91548db5, 0x71c45d05, 0x0406d46f, 0x605015ff 744656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x1998fb24, 0xd6bde997, 0x894043cc, 0x67d99e77 745656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xb0e842bd, 0x07898b88, 0xe7195b38, 0x79c8eedb 746656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa17c0a47, 0x7c420fe9, 0xf8841ec9, 0x00000000 747656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x09808683, 0x322bed48, 0x1e1170ac, 0x6c5a724e 748656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xfd0efffb, 0x0f853856, 0x3daed51e, 0x362d3927 749656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0a0fd964, 0x685ca621, 0x9b5b54d1, 0x24362e3a 750656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0c0a67b1, 0x9357e70f, 0xb4ee96d2, 0x1b9b919e 751656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x80c0c54f, 0x61dc20a2, 0x5a774b69, 0x1c121a16 752656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe293ba0a, 0xc0a02ae5, 0x3c22e043, 0x121b171d 753656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x0e090d0b, 0xf28bc7ad, 0x2db6a8b9, 0x141ea9c8 754656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x57f11985, 0xaf75074c, 0xee99ddbb, 0xa37f60fd 755656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xf701269f, 0x5c72f5bc, 0x44663bc5, 0x5bfb7e34 756656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x8b432976, 0xcb23c6dc, 0xb6edfc68, 0xb8e4f163 757656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xd731dcca, 0x42638510, 0x13972240, 0x84c61120 758656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x854a247d, 0xd2bb3df8, 0xaef93211, 0xc729a16d 759656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x1d9e2f4b, 0xdcb230f3, 0x0d8652ec, 0x77c1e3d0 760656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x2bb3166c, 0xa970b999, 0x119448fa, 0x47e96422 761656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa8fc8cc4, 0xa0f03f1a, 0x567d2cd8, 0x223390ef 762656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x87494ec7, 0xd938d1c1, 0x8ccaa2fe, 0x98d40b36 763656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xa6f581cf, 0xa57ade28, 0xdab78e26, 0x3fadbfa4 764656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x2c3a9de4, 0x5078920d, 0x6a5fcc9b, 0x547e4662 765656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xf68d13c2, 0x90d8b8e8, 0x2e39f75e, 0x82c3aff5 766656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9f5d80be, 0x69d0937c, 0x6fd52da9, 0xcf2512b3 767656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xc8ac993b, 0x10187da7, 0xe89c636e, 0xdb3bbb7b 768656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcd267809, 0x6e5918f4, 0xec9ab701, 0x834f9aa8 769656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xe6956e65, 0xaaffe67e, 0x21bccf08, 0xef15e8e6 770656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xbae79bd9, 0x4a6f36ce, 0xea9f09d4, 0x29b07cd6 771656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x31a4b2af, 0x2a3f2331, 0xc6a59430, 0x35a266c0 772656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x744ebc37, 0xfc82caa6, 0xe090d0b0, 0x33a7d815 773656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xf104984a, 0x41ecdaf7, 0x7fcd500e, 0x1791f62f 774656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x764dd68d, 0x43efb04d, 0xccaa4d54, 0xe49604df 775656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9ed1b5e3, 0x4c6a881b, 0xc12c1fb8, 0x4665517f 776656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9d5eea04, 0x018c355d, 0xfa877473, 0xfb0b412e 777656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xb3671d5a, 0x92dbd252, 0xe9105633, 0x6dd64713 778656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9ad7618c, 0x37a10c7a, 0x59f8148e, 0xeb133c89 779656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcea927ee, 0xb761c935, 0xe11ce5ed, 0x7a47b13c 780656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x9cd2df59, 0x55f2733f, 0x1814ce79, 0x73c737bf 781656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x53f7cdea, 0x5ffdaa5b, 0xdf3d6f14, 0x7844db86 782656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0xcaaff381, 0xb968c43e, 0x3824342c, 0xc2a3405f 783656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x161dc372, 0xbce2250c, 0x283c498b, 0xff0d9541 784656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x39a80171, 0x080cb3de, 0xd8b4e49c, 0x6456c190 785656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.word 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742 786656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ Td4[256] 787656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38 788656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb 789656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87 790656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb 791656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d 792656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e 793656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2 794656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25 795656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16 796656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92 797656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda 798656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84 799656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a 800656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06 801656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02 802656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b 803656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea 804656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73 805656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85 806656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e 807656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89 808656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b 809656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20 810656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4 811656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31 812656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f 813656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d 814656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef 815656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0 816656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61 817656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26 818656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.byte 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d 819656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size AES_Td,.-AES_Td 820656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 821656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ void AES_decrypt(const unsigned char *in, unsigned char *out, 822656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project@ const AES_KEY *key) { 823656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.global AES_decrypt 824656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type AES_decrypt,%function 825656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 5 826656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectAES_decrypt: 827656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r3,pc,#8 @ AES_decrypt 828656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project stmdb sp!,{r1,r4-r12,lr} 829656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r12,r0 @ inp 830656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r11,r2 831656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r10,r3,#AES_decrypt-AES_Td @ Td 832392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__<7 833656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r0,[r12,#3] @ load input data in endian-neutral 834656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#2] @ manner... 835656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#1] 836656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#0] 837656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r0,r0,r4,lsl#8 838656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r1,[r12,#7] 83943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r5,lsl#16 840656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#6] 84143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r0,r0,r6,lsl#24 842656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#5] 843656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#4] 844656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r1,r1,r4,lsl#8 845656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r2,[r12,#11] 84643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r5,lsl#16 847656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#10] 84843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r1,r1,r6,lsl#24 849656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#9] 850656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#8] 851656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r2,r2,r4,lsl#8 852656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r3,[r12,#15] 85343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r5,lsl#16 854656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r12,#14] 85543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom orr r2,r2,r6,lsl#24 856656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r5,[r12,#13] 857656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r6,[r12,#12] 858656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r4,lsl#8 859656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r5,lsl#16 860656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project orr r3,r3,r6,lsl#24 861392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 862392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r0,[r12,#0] 863392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r1,[r12,#4] 864392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r2,[r12,#8] 865392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r12,#12] 866392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 867392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 868392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 869392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 870392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 871392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 872392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 873656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bl _armv4_AES_decrypt 874656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 875656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r12,[sp],#4 @ pop out 876392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=7 877392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#ifdef __ARMEL__ 878392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r0,r0 879392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r1,r1 880392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r2,r2 881392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom rev r3,r3 882392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 883392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r0,[r12,#0] 884392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r1,[r12,#4] 885392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r2,[r12,#8] 886392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom str r3,[r12,#12] 887392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 888656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r0,lsr#24 @ write output in endian-neutral 889656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r0,lsr#16 @ manner... 890656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r0,lsr#8 891656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#0] 892656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#1] 893656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r1,lsr#24 89443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#2] 895656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r1,lsr#16 89643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r0,[r12,#3] 897656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r1,lsr#8 898656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#4] 899656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#5] 900656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r2,lsr#24 90143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#6] 902656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r2,lsr#16 90343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r1,[r12,#7] 904656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r2,lsr#8 905656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#8] 906656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#9] 907656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r4,r3,lsr#24 90843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r6,[r12,#10] 909656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r5,r3,lsr#16 91043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom strb r2,[r12,#11] 911656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r6,r3,lsr#8 912656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r4,[r12,#12] 913656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r5,[r12,#13] 914656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r6,[r12,#14] 915656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project strb r3,[r12,#15] 916392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 917392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#if __ARM_ARCH__>=5 918392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldmia sp!,{r4-r12,pc} 919392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#else 920656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldmia sp!,{r4-r12,lr} 921656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project tst lr,#1 922656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project moveq pc,lr @ be binary compatible with V4, yet 923656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project .word 0xe12fff1e @ interoperable with Thumb ISA:-) 924392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom#endif 925656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size AES_decrypt,.-AES_decrypt 926656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 927656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.type _armv4_AES_decrypt,%function 928656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 2 929656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project_armv4_AES_decrypt: 930656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project str lr,[sp,#-4]! @ push lr 93143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldmia r11!,{r4-r7} 932656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r4 93343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r12,[r11,#240-16] 934656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r5 935656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r6 936656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r3,r7 937656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r12,r12,#1 938656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov lr,#255 939656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 940656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r0,lsr#16 941656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r0,lsr#8 942656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r0 943656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r0,r0,lsr#24 94443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom.Ldec_loop: 945656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r4,[r10,r7,lsl#2] @ Td1[s0>>16] 946656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r1 @ i0 94743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,r8,lsl#2] @ Td2[s0>>8] 948656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r1,lsr#16 94943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,r9,lsl#2] @ Td3[s0>>0] 950656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r1,lsr#8 95143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r0,[r10,r0,lsl#2] @ Td0[s0>>24] 952656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project mov r1,r1,lsr#24 95343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 954656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Td3[s1>>0] 955656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r8,[r10,r8,lsl#2] @ Td1[s1>>16] 956656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Td2[s1>>8] 957656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#24 95843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r1,[r10,r1,lsl#2] @ Td0[s1>>24] 959656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r2,lsr#8 @ i0 96043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r5,r8,r5,ror#8 961656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r2 @ i1 96243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r9,r6,ror#8 963656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r2,lsr#16 964656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Td2[s2>>8] 965392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r1,r1,r4,ror#8 966392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r10,r8,lsl#2] @ Td3[s2>>0] 96743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r2,r2,lsr#24 96843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 969656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Td1[s2>>16] 970656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#16 97143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r2,[r10,r2,lsl#2] @ Td0[s2>>24] 972656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3,lsr#16 @ i0 97343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r8,ror#24 974656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r3,lsr#8 @ i1 97543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r6,r9,r6,ror#8 976656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r3 @ i2 977656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r7,[r10,r7,lsl#2] @ Td1[s3>>16] 978392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r2,r2,r5,ror#8 979392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r8,[r10,r8,lsl#2] @ Td2[s3>>8] 98043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r3,r3,lsr#24 98143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 982656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldr r9,[r10,r9,lsl#2] @ Td3[s3>>0] 983656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,ror#8 984392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r7,[r11],#16 985656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r8,ror#16 986392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r3,[r10,r3,lsl#2] @ Td0[s3>>24] 987656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r2,r9,ror#24 988656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 98943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#-12] 99043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r0,r0,r7 991392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldr r5,[r11,#-8] 992392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r3,r3,r6,ror#8 99343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r11,#-4] 99443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r7,lr,r0,lsr#16 99543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r4 99643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r8,lr,r0,lsr#8 99743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r5 99843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r0 99943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r6 100043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom mov r0,r0,lsr#24 1001656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1002656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project subs r12,r12,#1 1003656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project bne .Ldec_loop 1004656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1005656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project add r10,r10,#1024 1006656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 100743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,#0] @ prefetch Td4 100843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,#32] 100943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r10,#64] 101043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,#96] 101143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,#128] 101243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r10,#160] 101343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r10,#192] 101443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r10,#224] 1015656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 101643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r0,[r10,r0] @ Td4[s0>>24] 1017656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r4,[r10,r7] @ Td4[s0>>16] 1018656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r1 @ i0 101943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r5,[r10,r8] @ Td4[s0>>8] 1020656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r1,lsr#16 102143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r6,[r10,r9] @ Td4[s0>>0] 1022656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r9,lr,r1,lsr#8 102343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 1024656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] @ Td4[s1>>0] 1025656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r1,[r10,r1,lsr#24] @ Td4[s1>>24] 1026656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r8,[r10,r8] @ Td4[s1>>16] 1027656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r7,r0,lsl#24 102843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] @ Td4[s1>>8] 1029656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r4,r1,lsl#8 1030656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r2,lsr#8 @ i0 103143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r5,r5,r8,lsl#8 1032656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r2 @ i1 1033656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] @ Td4[s2>>8] 1034392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r6,r6,r9,lsl#8 1035392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r8,[r10,r8] @ Td4[s2>>0] 103643c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r2,lsr#16 103743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 1038656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r2,[r10,r2,lsr#24] @ Td4[s2>>24] 1039656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,lsl#8 104043c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldrb r9,[r10,r9] @ Td4[s2>>16] 1041656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r8,r1,lsl#16 1042656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r7,lr,r3,lsr#16 @ i0 104343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r5,r2,lsl#16 1044656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project and r8,lr,r3,lsr#8 @ i1 1045656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r7,[r10,r7] @ Td4[s3>>16] 1046392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom eor r6,r6,r9,lsl#16 1047392aa7cc7d2b122614c5393c3e357da07fd07af3Brian Carlstrom ldrb r8,[r10,r8] @ Td4[s3>>8] 104843c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom and r9,lr,r3 @ i2 104943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom 1050656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r9,[r10,r9] @ Td4[s3>>0] 1051656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ldrb r3,[r10,r3,lsr#24] @ Td4[s3>>24] 1052656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r0,r0,r7,lsl#16 105343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r7,[r11,#0] 1054656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r1,r1,r8,lsl#8 105543c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r4,[r11,#4] 1056656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r2,r9,r2,lsl#8 105743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r5,[r11,#8] 1058656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project eor r3,r6,r3,lsl#24 105943c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr r6,[r11,#12] 1060656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 106143c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r0,r0,r7 106243c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r1,r1,r4 106343c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r2,r2,r5 106443c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom eor r3,r3,r6 1065656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 1066656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project sub r10,r10,#1024 106743c12e3d4f9bbbbd4a8ba7b149686437514bc6b6Brian Carlstrom ldr pc,[sp],#4 @ pop and return 1068656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.size _armv4_AES_decrypt,.-_armv4_AES_decrypt 1069656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.asciz "AES for ARMv4, CRYPTOGAMS by <appro@openssl.org>" 1070656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project.align 2 1071