+++ /dev/null
-; 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
-; RRotU64.asm\r
-;\r
-; Abstract:\r
-;\r
-; 64-bit right rotation for Ia32\r
-;\r
-;------------------------------------------------------------------------------\r
-\r
- .686\r
- .model flat,C\r
- .code\r
-\r
-;------------------------------------------------------------------------------\r
-; UINT64\r
-; EFIAPI\r
-; InternalMathRRotU64 (\r
-; IN UINT64 Operand,\r
-; IN UINTN Count\r
-; );\r
-;------------------------------------------------------------------------------\r
-InternalMathRRotU64 PROC USES ebx\r
- mov cl, [esp + 16]\r
- mov eax, [esp + 8]\r
- mov edx, [esp + 12]\r
- shrd ebx, eax, cl\r
- shrd eax, edx, cl\r
- rol ebx, cl\r
- shrd edx, ebx, cl\r
- test cl, 32 ; Count >= 32?\r
- cmovnz ecx, eax ; switch eax & edx if Count >= 32\r
- cmovnz eax, edx\r
- cmovnz edx, ecx\r
- ret\r
-InternalMathRRotU64 ENDP\r
-\r
- END\r