+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- crc32.c\r
-\r
-Abstract:\r
-\r
- CalcuateCrc32 routine.\r
- \r
---*/\r
-\r
-#include <stdlib.h>\r
-#include "Crc32.h"\r
-\r
-UINT32 mCrcTable[256] = {\r
- 0x00000000,\r
- 0x77073096,\r
- 0xEE0E612C,\r
- 0x990951BA,\r
- 0x076DC419,\r
- 0x706AF48F,\r
- 0xE963A535,\r
- 0x9E6495A3,\r
- 0x0EDB8832,\r
- 0x79DCB8A4,\r
- 0xE0D5E91E,\r
- 0x97D2D988,\r
- 0x09B64C2B,\r
- 0x7EB17CBD,\r
- 0xE7B82D07,\r
- 0x90BF1D91,\r
- 0x1DB71064,\r
- 0x6AB020F2,\r
- 0xF3B97148,\r
- 0x84BE41DE,\r
- 0x1ADAD47D,\r
- 0x6DDDE4EB,\r
- 0xF4D4B551,\r
- 0x83D385C7,\r
- 0x136C9856,\r
- 0x646BA8C0,\r
- 0xFD62F97A,\r
- 0x8A65C9EC,\r
- 0x14015C4F,\r
- 0x63066CD9,\r
- 0xFA0F3D63,\r
- 0x8D080DF5,\r
- 0x3B6E20C8,\r
- 0x4C69105E,\r
- 0xD56041E4,\r
- 0xA2677172,\r
- 0x3C03E4D1,\r
- 0x4B04D447,\r
- 0xD20D85FD,\r
- 0xA50AB56B,\r
- 0x35B5A8FA,\r
- 0x42B2986C,\r
- 0xDBBBC9D6,\r
- 0xACBCF940,\r
- 0x32D86CE3,\r
- 0x45DF5C75,\r
- 0xDCD60DCF,\r
- 0xABD13D59,\r
- 0x26D930AC,\r
- 0x51DE003A,\r
- 0xC8D75180,\r
- 0xBFD06116,\r
- 0x21B4F4B5,\r
- 0x56B3C423,\r
- 0xCFBA9599,\r
- 0xB8BDA50F,\r
- 0x2802B89E,\r
- 0x5F058808,\r
- 0xC60CD9B2,\r
- 0xB10BE924,\r
- 0x2F6F7C87,\r
- 0x58684C11,\r
- 0xC1611DAB,\r
- 0xB6662D3D,\r
- 0x76DC4190,\r
- 0x01DB7106,\r
- 0x98D220BC,\r
- 0xEFD5102A,\r
- 0x71B18589,\r
- 0x06B6B51F,\r
- 0x9FBFE4A5,\r
- 0xE8B8D433,\r
- 0x7807C9A2,\r
- 0x0F00F934,\r
- 0x9609A88E,\r
- 0xE10E9818,\r
- 0x7F6A0DBB,\r
- 0x086D3D2D,\r
- 0x91646C97,\r
- 0xE6635C01,\r
- 0x6B6B51F4,\r
- 0x1C6C6162,\r
- 0x856530D8,\r
- 0xF262004E,\r
- 0x6C0695ED,\r
- 0x1B01A57B,\r
- 0x8208F4C1,\r
- 0xF50FC457,\r
- 0x65B0D9C6,\r
- 0x12B7E950,\r
- 0x8BBEB8EA,\r
- 0xFCB9887C,\r
- 0x62DD1DDF,\r
- 0x15DA2D49,\r
- 0x8CD37CF3,\r
- 0xFBD44C65,\r
- 0x4DB26158,\r
- 0x3AB551CE,\r
- 0xA3BC0074,\r
- 0xD4BB30E2,\r
- 0x4ADFA541,\r
- 0x3DD895D7,\r
- 0xA4D1C46D,\r
- 0xD3D6F4FB,\r
- 0x4369E96A,\r
- 0x346ED9FC,\r
- 0xAD678846,\r
- 0xDA60B8D0,\r
- 0x44042D73,\r
- 0x33031DE5,\r
- 0xAA0A4C5F,\r
- 0xDD0D7CC9,\r
- 0x5005713C,\r
- 0x270241AA,\r
- 0xBE0B1010,\r
- 0xC90C2086,\r
- 0x5768B525,\r
- 0x206F85B3,\r
- 0xB966D409,\r
- 0xCE61E49F,\r
- 0x5EDEF90E,\r
- 0x29D9C998,\r
- 0xB0D09822,\r
- 0xC7D7A8B4,\r
- 0x59B33D17,\r
- 0x2EB40D81,\r
- 0xB7BD5C3B,\r
- 0xC0BA6CAD,\r
- 0xEDB88320,\r
- 0x9ABFB3B6,\r
- 0x03B6E20C,\r
- 0x74B1D29A,\r
- 0xEAD54739,\r
- 0x9DD277AF,\r
- 0x04DB2615,\r
- 0x73DC1683,\r
- 0xE3630B12,\r
- 0x94643B84,\r
- 0x0D6D6A3E,\r
- 0x7A6A5AA8,\r
- 0xE40ECF0B,\r
- 0x9309FF9D,\r
- 0x0A00AE27,\r
- 0x7D079EB1,\r
- 0xF00F9344,\r
- 0x8708A3D2,\r
- 0x1E01F268,\r
- 0x6906C2FE,\r
- 0xF762575D,\r
- 0x806567CB,\r
- 0x196C3671,\r
- 0x6E6B06E7,\r
- 0xFED41B76,\r
- 0x89D32BE0,\r
- 0x10DA7A5A,\r
- 0x67DD4ACC,\r
- 0xF9B9DF6F,\r
- 0x8EBEEFF9,\r
- 0x17B7BE43,\r
- 0x60B08ED5,\r
- 0xD6D6A3E8,\r
- 0xA1D1937E,\r
- 0x38D8C2C4,\r
- 0x4FDFF252,\r
- 0xD1BB67F1,\r
- 0xA6BC5767,\r
- 0x3FB506DD,\r
- 0x48B2364B,\r
- 0xD80D2BDA,\r
- 0xAF0A1B4C,\r
- 0x36034AF6,\r
- 0x41047A60,\r
- 0xDF60EFC3,\r
- 0xA867DF55,\r
- 0x316E8EEF,\r
- 0x4669BE79,\r
- 0xCB61B38C,\r
- 0xBC66831A,\r
- 0x256FD2A0,\r
- 0x5268E236,\r
- 0xCC0C7795,\r
- 0xBB0B4703,\r
- 0x220216B9,\r
- 0x5505262F,\r
- 0xC5BA3BBE,\r
- 0xB2BD0B28,\r
- 0x2BB45A92,\r
- 0x5CB36A04,\r
- 0xC2D7FFA7,\r
- 0xB5D0CF31,\r
- 0x2CD99E8B,\r
- 0x5BDEAE1D,\r
- 0x9B64C2B0,\r
- 0xEC63F226,\r
- 0x756AA39C,\r
- 0x026D930A,\r
- 0x9C0906A9,\r
- 0xEB0E363F,\r
- 0x72076785,\r
- 0x05005713,\r
- 0x95BF4A82,\r
- 0xE2B87A14,\r
- 0x7BB12BAE,\r
- 0x0CB61B38,\r
- 0x92D28E9B,\r
- 0xE5D5BE0D,\r
- 0x7CDCEFB7,\r
- 0x0BDBDF21,\r
- 0x86D3D2D4,\r
- 0xF1D4E242,\r
- 0x68DDB3F8,\r
- 0x1FDA836E,\r
- 0x81BE16CD,\r
- 0xF6B9265B,\r
- 0x6FB077E1,\r
- 0x18B74777,\r
- 0x88085AE6,\r
- 0xFF0F6A70,\r
- 0x66063BCA,\r
- 0x11010B5C,\r
- 0x8F659EFF,\r
- 0xF862AE69,\r
- 0x616BFFD3,\r
- 0x166CCF45,\r
- 0xA00AE278,\r
- 0xD70DD2EE,\r
- 0x4E048354,\r
- 0x3903B3C2,\r
- 0xA7672661,\r
- 0xD06016F7,\r
- 0x4969474D,\r
- 0x3E6E77DB,\r
- 0xAED16A4A,\r
- 0xD9D65ADC,\r
- 0x40DF0B66,\r
- 0x37D83BF0,\r
- 0xA9BCAE53,\r
- 0xDEBB9EC5,\r
- 0x47B2CF7F,\r
- 0x30B5FFE9,\r
- 0xBDBDF21C,\r
- 0xCABAC28A,\r
- 0x53B39330,\r
- 0x24B4A3A6,\r
- 0xBAD03605,\r
- 0xCDD70693,\r
- 0x54DE5729,\r
- 0x23D967BF,\r
- 0xB3667A2E,\r
- 0xC4614AB8,\r
- 0x5D681B02,\r
- 0x2A6F2B94,\r
- 0xB40BBE37,\r
- 0xC30C8EA1,\r
- 0x5A05DF1B,\r
- 0x2D02EF8D\r
-};\r
-\r
-EFI_STATUS\r
-CalculateCrc32 (\r
- IN UINT8 *Data,\r
- IN UINTN DataSize,\r
- IN OUT UINT32 *CrcOut\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- The CalculateCrc32 routine.\r
-\r
-Arguments:\r
-\r
- Data - The buffer contaning the data to be processed\r
- DataSize - The size of data to be processed\r
- CrcOut - A pointer to the caller allocated UINT32 that on\r
- contains the CRC32 checksum of Data\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Calculation is successful.\r
- EFI_INVALID_PARAMETER - Data / CrcOut = NULL, or DataSize = 0\r
-\r
---*/\r
-{\r
- UINT32 Crc;\r
- UINTN Index;\r
- UINT8 *Ptr;\r
-\r
- if ((DataSize == 0) || (Data == NULL) || (CrcOut == NULL)) {\r
- return EFI_INVALID_PARAMETER;\r
- }\r
-\r
- Crc = 0xffffffff;\r
- for (Index = 0, Ptr = Data; Index < DataSize; Index++, Ptr++) {\r
- Crc = (Crc >> 8) ^ mCrcTable[(UINT8) Crc ^ *Ptr];\r
- }\r
-\r
- *CrcOut = Crc ^ 0xffffffff;\r
-\r
- return EFI_SUCCESS;\r
-}\r