Subversion Repositories decoder

Rev

Blame | Last modification | View Log | RSS feed

{Copyright:      Hagen Reddmann  HaReddmann at T-Online dot de
 Author:         Hagen Reddmann
 Remarks:        freeware, but this Copyright must be included
 known Problems: none
 Version:        5.1,  Part I from Delphi Encryption Compendium  ( DEC Part I)
                 Delphi 5

 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

}

{$IFDEF THash_MD2_asm}
procedure THash_MD2.DoTransform(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                push    ebp

                lea  esi, [eax].THash_MD2.FDigest


                // copying incoming buffer into work buffer
                mov  eax, [edx]
                mov  ecx, [edx + 4]
                mov  ebx, [edx + 8]
                mov  edi, [edx + 12]
                mov  [esi + 16], eax
                mov  [esi + 16 + 4], ecx
                mov  [esi + 16 + 8], ebx
                mov  [esi + 16 + 12], edi


                // recalculating message checksum
                //  loop unrolled to 4 iterations,
                // combined with
                //  xor first 16 bytes with second 16 and move res to third
                mov   ecx, dword ptr [esi + 60]
                mov   edi, -16
                shr   ecx, 24

             @checksumloop:

                mov  edx, dword ptr [esi + edi + 16]       // digest
                mov  ebp, dword ptr [esi + edi + 16 + 16]  // source data
                mov  ebx, dword ptr [esi + edi + 16 + 48]  // checksum

                xor  ecx, ebp
                xor  edx, ebp
                and  ecx, 0ffh
                xor  eax, eax
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
                shr  ebp, 8
                xor  ecx, ebx
                mov  dword ptr [esi + edi + 16 + 32], edx
                and  ecx, 0ffh
                shr  ebx, 8
                or   eax, ecx
                shl  eax, 24

                xor  ecx, ebp
                and  ecx, 0ffh
                shr  ebp, 8
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
                xor  ecx, ebx
                and  ecx, 0ffh
                shr  ebx, 8
                or   eax, ecx
                ror  eax, 8

                xor  ecx, ebp
                and  ecx, 0ffh
                shr  ebp, 8
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
                xor  ecx, ebx
                and  ecx, 0ffh
                shr  ebx, 8
                or   eax, ecx
                ror  eax, 8

                xor  ecx, ebp
                and  ecx, 0ffh
                mov  ecx, dword ptr MD2_PiSubst[ecx*4]
                xor  ecx, ebx
                or   eax, ecx
                ror  eax, 8

                mov  dword ptr [esi + edi + 16 + 48], eax

                add  edi, 4
                jnz  @checksumloop


                // do 18 rounds of transformation
                //  internal loop unrolled

                lea  edi, MD2_PiSubst  // MD2 permutation array pointer
                xor  ecx, ecx       // T variable
                xor  ebp, ebp       // external 18 rounds loop
                mov  ebx, 0ffh      // mask constant

             @roundsloop:


                // part 1
                mov  edx, dword ptr [esi]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi], eax

                // part 2
                mov  edx, dword ptr [esi + 4]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 4], eax

                // part 3
                mov  edx, dword ptr [esi + 8]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 8], eax

                // part 4
                mov  edx, dword ptr [esi + 12]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 12], eax

                // part 5
                mov  edx, dword ptr [esi + 16]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 16], eax

                // part 6
                mov  edx, dword ptr [esi + 20]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 20], eax

                // part 7
                mov  edx, dword ptr [esi + 24]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 24], eax

                // part 8
                mov  edx, dword ptr [esi + 28]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 28], eax

                // part 9
                mov  edx, dword ptr [esi + 32]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 32], eax

                // part 10
                mov  edx, dword ptr [esi + 36]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 36], eax

                // part 11
                mov  edx, dword ptr [esi + 40]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 40], eax

                // part 12
                mov  edx, dword ptr [esi + 44]
                mov  ecx, dword ptr [edi + ecx*4]
                xor  eax, eax
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                shl  eax, 24
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                shr  edx, 8
                and  ecx, ebx
                or   eax, ecx

                mov  ecx, dword ptr [edi + ecx*4]
                ror  eax, 8
                xor  ecx, edx
                or   eax, ecx
                ror  eax, 8
                mov  dword ptr [esi + 44], eax


                add  ecx, ebp
                inc  ebp
                and  ecx, ebx
                cmp  ebp, 18
                jnz  @roundsloop

                
                pop  ebp
                pop  edi
                pop  esi
                pop  ebx
end;
{$ENDIF}

{$IFDEF THash_MD4_asm}
procedure THash_MD4.DoTransform(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THash_MD4.FDigest  // let edi points to A,B ..
                mov     esi, edx                      // let esi points to Buffer
                push    ebp

                mov     eax, [edi]
                mov     ebx, [edi+4]
                push    edi
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     edi, ecx
                xor     edi, edx
                and     edi, ebx
                mov     ebp, [esi]
                xor     edi, edx
                add     eax, ebp
                mov     ebp, ebx
                add     eax, edi
                rol     eax, 3
                xor     ebp, ecx
                mov     edi, [esi+4]
                and     ebp, eax
                add     edx, edi
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                xor     edi, ebx
                rol     edx, 7
                and     edi, edx
                mov     ebp, [esi+8]
                xor     edi, ebx
                add     ecx, ebp
                mov     ebp, edx
                add     ecx, edi
                rol     ecx, 0Bh
                xor     ebp, eax
                mov     edi, [esi+0Ch]
                and     ebp, ecx
                add     ebx, edi
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                xor     edi, edx
                ror     ebx, 0Dh
                and     edi, ebx
                mov     ebp, [esi+10h]
                xor     edi, edx
                add     eax, ebp
                mov     ebp, ebx
                add     eax, edi
                rol     eax, 3
                xor     ebp, ecx
                mov     edi, [esi+14h]
                and     ebp, eax
                add     edx, edi
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                xor     edi, ebx
                rol     edx, 7
                and     edi, edx
                mov     ebp, [esi+18h]
                xor     edi, ebx
                add     ecx, ebp
                mov     ebp, edx
                add     ecx, edi
                rol     ecx, 0Bh
                xor     ebp, eax
                mov     edi, [esi+1Ch]
                and     ebp, ecx
                add     ebx, edi
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                xor     edi, edx
                ror     ebx, 0Dh
                and     edi, ebx
                mov     ebp, [esi+20h]
                xor     edi, edx
                add     eax, ebp
                mov     ebp, ebx
                add     eax, edi
                rol     eax, 3
                xor     ebp, ecx
                mov     edi, [esi+24h]
                and     ebp, eax
                add     edx, edi
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                xor     edi, ebx
                rol     edx, 7
                and     edi, edx
                mov     ebp, [esi+28h]
                xor     edi, ebx
                add     ecx, ebp
                mov     ebp, edx
                add     ecx, edi
                rol     ecx, 0Bh
                xor     ebp, eax
                mov     edi, [esi+2Ch]
                and     ebp, ecx
                add     ebx, edi
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                xor     edi, edx
                ror     ebx, 0Dh
                and     edi, ebx
                mov     ebp, [esi+30h]
                xor     edi, edx
                add     eax, ebp
                mov     ebp, ebx
                add     eax, edi
                rol     eax, 3
                xor     ebp, ecx
                mov     edi, [esi+34h]
                and     ebp, eax
                add     edx, edi
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                xor     edi, ebx
                rol     edx, 7
                and     edi, edx
                mov     ebp, [esi+38h]
                xor     edi, ebx
                add     ecx, ebp
                mov     ebp, edx
                add     ecx, edi
                rol     ecx, 0Bh
                xor     ebp, eax
                mov     edi, [esi+3Ch]
                and     ebp, ecx
                add     ebx, edi
                xor     ebp, eax
                mov     edi, edx
                add     ebx, ebp
                mov     ebp, edx
                ror     ebx, 0Dh
                or      edi, ecx
                and     ebp, ecx
                and     edi, ebx
                add     eax, [esi]
                or      edi, ebp
                mov     ebp, ecx
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 3
                or      edi, ebx
                and     ebp, ebx
                and     edi, eax
                add     edx, [esi+10h]
                or      edi, ebp
                mov     ebp, ebx
                lea     edx, [edx+edi+5A827999h]
                mov     edi, ebx
                rol     edx, 5
                or      edi, eax
                and     ebp, eax
                and     edi, edx
                add     ecx, [esi+20h]
                or      edi, ebp
                mov     ebp, eax
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, eax
                rol     ecx, 9
                or      edi, edx
                and     ebp, edx
                and     edi, ecx
                add     ebx, [esi+30h]
                or      edi, ebp
                mov     ebp, edx
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 0Dh
                or      edi, ecx
                and     ebp, ecx
                and     edi, ebx
                add     eax, [esi+4]
                or      edi, ebp
                mov     ebp, ecx
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 3
                or      edi, ebx
                and     ebp, ebx
                and     edi, eax
                add     edx, [esi+14h]
                or      edi, ebp
                mov     ebp, ebx
                lea     edx, [edx+edi+5A827999h]
                mov     edi, ebx
                rol     edx, 5
                or      edi, eax
                and     ebp, eax
                and     edi, edx
                add     ecx, [esi+24h]
                or      edi, ebp
                mov     ebp, eax
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, eax
                rol     ecx, 9
                or      edi, edx
                and     ebp, edx
                and     edi, ecx
                add     ebx, [esi+34h]
                or      edi, ebp
                mov     ebp, edx
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 0Dh
                or      edi, ecx
                and     ebp, ecx
                and     edi, ebx
                add     eax, [esi+8]
                or      edi, ebp
                mov     ebp, ecx
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 3
                or      edi, ebx
                and     ebp, ebx
                and     edi, eax
                add     edx, [esi+18h]
                or      edi, ebp
                mov     ebp, ebx
                lea     edx, [edx+edi+5A827999h]
                mov     edi, ebx
                rol     edx, 5
                or      edi, eax
                and     ebp, eax
                and     edi, edx
                add     ecx, [esi+28h]
                or      edi, ebp
                mov     ebp, eax
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, eax
                rol     ecx, 9
                or      edi, edx
                and     ebp, edx
                and     edi, ecx
                add     ebx, [esi+38h]
                or      edi, ebp
                mov     ebp, edx
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 0Dh
                or      edi, ecx
                and     ebp, ecx
                and     edi, ebx
                add     eax, [esi+0Ch]
                or      edi, ebp
                mov     ebp, ecx
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 3
                or      edi, ebx
                and     ebp, ebx
                and     edi, eax
                add     edx, [esi+1Ch]
                or      edi, ebp
                mov     ebp, ebx
                lea     edx, [edx+edi+5A827999h]
                mov     edi, ebx
                rol     edx, 5
                or      edi, eax
                and     ebp, eax
                and     edi, edx
                add     ecx, [esi+2Ch]
                or      edi, ebp
                mov     ebp, eax
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, eax
                rol     ecx, 9
                or      edi, edx
                and     ebp, edx
                and     edi, ecx
                add     ebx, [esi+3Ch]
                or      edi, ebp
                mov     ebp, edx
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 0Dh
                xor     edi, ecx
                mov     ebp, [esi]
                xor     edi, ebx
                add     eax, ebp
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     ebp, ecx
                rol     eax, 3
                xor     ebp, ebx
                mov     edi, [esi+20h]
                xor     ebp, eax
                add     edx, edi
                lea     edx, [edx+ebp+6ED9EBA1h]
                mov     edi, ebx
                rol     edx, 9
                xor     edi, eax
                mov     ebp, [esi+10h]
                xor     edi, edx
                add     ecx, ebp
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     ebp, eax
                rol     ecx, 0Bh
                xor     ebp, edx
                mov     edi, [esi+30h]
                xor     ebp, ecx
                add     ebx, edi
                lea     ebx, [ebx+ebp+6ED9EBA1h]
                mov     edi, edx
                rol     ebx, 0Fh
                xor     edi, ecx
                mov     ebp, [esi+8]
                xor     edi, ebx
                add     eax, ebp
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     ebp, ecx
                rol     eax, 3
                xor     ebp, ebx
                mov     edi, [esi+28h]
                xor     ebp, eax
                add     edx, edi
                lea     edx, [edx+ebp+6ED9EBA1h]
                mov     edi, ebx
                rol     edx, 9
                xor     edi, eax
                mov     ebp, [esi+18h]
                xor     edi, edx
                add     ecx, ebp
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     ebp, eax
                rol     ecx, 0Bh
                xor     ebp, edx
                mov     edi, [esi+38h]
                xor     ebp, ecx
                add     ebx, edi
                lea     ebx, [ebx+ebp+6ED9EBA1h]
                mov     edi, edx
                rol     ebx, 0Fh
                xor     edi, ecx
                mov     ebp, [esi+4]
                xor     edi, ebx
                add     eax, ebp
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     ebp, ecx
                rol     eax, 3
                xor     ebp, ebx
                mov     edi, [esi+24h]
                xor     ebp, eax
                add     edx, edi
                lea     edx, [edx+ebp+6ED9EBA1h]
                mov     edi, ebx
                rol     edx, 9
                xor     edi, eax
                mov     ebp, [esi+14h]
                xor     edi, edx
                add     ecx, ebp
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     ebp, eax
                rol     ecx, 0Bh
                xor     ebp, edx
                mov     edi, [esi+34h]
                xor     ebp, ecx
                add     ebx, edi
                lea     ebx, [ebx+ebp+6ED9EBA1h]
                mov     edi, edx
                rol     ebx, 0Fh
                xor     edi, ecx
                mov     ebp, [esi+0Ch]
                xor     edi, ebx
                add     eax, ebp
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     ebp, ecx
                rol     eax, 3
                xor     ebp, ebx
                mov     edi, [esi+2Ch]
                xor     ebp, eax
                add     edx, edi
                lea     edx, [edx+ebp+6ED9EBA1h]
                mov     edi, ebx
                rol     edx, 9
                xor     edi, eax
                mov     ebp, [esi+1Ch]
                xor     edi, edx
                add     ecx, ebp
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     ebp, eax
                rol     ecx, 0Bh
                xor     ebp, edx
                mov     edi, [esi+3Ch]
                xor     ebp, ecx
                add     ebx, edi
                lea     ebx, [ebx+ebp+6ED9EBA1h]
                rol     ebx, 0Fh
                pop     edi
                add     [edi], eax
                add     [edi+4], ebx
                add     [edi+8], ecx
                add     [edi+0Ch], edx

                pop     ebp
                pop     edi
                pop     esi
                pop     ebx

end;
{$ENDIF}

{$IFDEF THash_MD5_asm}
procedure THash_MD5.DoTransform(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THash_MD5.FDigest   // let edi points to A,B ..
                mov     esi, edx                       // let esi points to Buffer
                push    ebp
                mov     eax, [edi]
                mov     ebx, [edi+4]
                push    edi
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     edi, ecx
                mov     ebp, [esi]
                xor     edi, edx
                lea     eax, [eax+ebp-28955B88h]
                and     edi, ebx
                mov     ebp, [esi+4]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 7
                xor     edi, ecx
                add     eax, ebx
                lea     edx, [edx+ebp-173848AAh]
                and     edi, eax
                mov     ebp, [esi+8]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Ch
                xor     edi, ebx
                add     edx, eax
                lea     ecx, [ecx+ebp+242070DBh]
                and     edi, edx
                mov     ebp, [esi+0Ch]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                ror     ecx, 0Fh
                xor     edi, eax
                add     ecx, edx
                lea     ebx, [ebx+ebp-3E423112h]
                and     edi, ecx
                mov     ebp, [esi+10h]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 0Ah
                xor     edi, edx
                add     ebx, ecx
                lea     eax, [eax+ebp-0A83F051h]
                and     edi, ebx
                mov     ebp, [esi+14h]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 7
                xor     edi, ecx
                add     eax, ebx
                lea     edx, [edx+ebp+4787C62Ah]
                and     edi, eax
                mov     ebp, [esi+18h]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Ch
                xor     edi, ebx
                add     edx, eax
                lea     ecx, [ecx+ebp-57CFB9EDh]
                and     edi, edx
                mov     ebp, [esi+1Ch]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                ror     ecx, 0Fh
                xor     edi, eax
                add     ecx, edx
                lea     ebx, [ebx+ebp-2B96AFFh]
                and     edi, ecx
                mov     ebp, [esi+20h]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 0Ah
                xor     edi, edx
                add     ebx, ecx
                lea     eax, [eax+ebp+698098D8h]
                and     edi, ebx
                mov     ebp, [esi+24h]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 7
                xor     edi, ecx
                add     eax, ebx
                lea     edx, [edx+ebp-74BB0851h]
                and     edi, eax
                mov     ebp, [esi+28h]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Ch
                xor     edi, ebx
                add     edx, eax
                lea     ecx, [ecx+ebp-0A44Fh]
                and     edi, edx
                mov     ebp, [esi+2Ch]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                ror     ecx, 0Fh
                xor     edi, eax
                add     ecx, edx
                lea     ebx, [ebx+ebp-76A32842h]
                and     edi, ecx
                mov     ebp, [esi+30h]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 0Ah
                xor     edi, edx
                add     ebx, ecx
                lea     eax, [eax+ebp+6B901122h]
                and     edi, ebx
                mov     ebp, [esi+34h]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 7
                xor     edi, ecx
                add     eax, ebx
                lea     edx, [edx+ebp-2678E6Dh]
                and     edi, eax
                mov     ebp, [esi+38h]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Ch
                xor     edi, ebx
                add     edx, eax
                lea     ecx, [ecx+ebp-5986BC72h]
                and     edi, edx
                mov     ebp, [esi+3Ch]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                ror     ecx, 0Fh
                xor     edi, eax
                add     ecx, edx
                lea     ebx, [ebx+ebp+49B40821h]
                and     edi, ecx
                mov     ebp, [esi+4]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 0Ah
                xor     edi, edx
                add     ebx, ecx
                mov     edi, ecx
                xor     edi, ebx
                lea     eax, [eax+ebp-9E1DA9Eh]
                and     edi, edx
                mov     ebp, [esi+18h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 5
                add     eax, ebx
                xor     edi, eax
                lea     edx, [edx+ebp-3FBF4CC0h]
                and     edi, ecx
                mov     ebp, [esi+2Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                add     edx, eax
                xor     edi, edx
                lea     ecx, [ecx+ebp+265E5A51h]
                and     edi, ebx
                mov     ebp, [esi]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Eh
                add     ecx, edx
                xor     edi, ecx
                lea     ebx, [ebx+ebp-16493856h]
                and     edi, eax
                mov     ebp, [esi+14h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 0Ch
                add     ebx, ecx
                xor     edi, ebx
                lea     eax, [eax+ebp-29D0EFA3h]
                and     edi, edx
                mov     ebp, [esi+28h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 5
                add     eax, ebx
                xor     edi, eax
                lea     edx, [edx+ebp+2441453h]
                and     edi, ecx
                mov     ebp, [esi+3Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                add     edx, eax
                xor     edi, edx
                lea     ecx, [ecx+ebp-275E197Fh]
                and     edi, ebx
                mov     ebp, [esi+10h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Eh
                add     ecx, edx
                xor     edi, ecx
                lea     ebx, [ebx+ebp-182C0438h]
                and     edi, eax
                mov     ebp, [esi+24h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 0Ch
                add     ebx, ecx
                xor     edi, ebx
                lea     eax, [eax+ebp+21E1CDE6h]
                and     edi, edx
                mov     ebp, [esi+38h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 5
                add     eax, ebx
                xor     edi, eax
                lea     edx, [edx+ebp-3CC8F82Ah]
                and     edi, ecx
                mov     ebp, [esi+0Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                add     edx, eax
                xor     edi, edx
                lea     ecx, [ecx+ebp-0B2AF279h]
                and     edi, ebx
                mov     ebp, [esi+20h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Eh
                add     ecx, edx
                xor     edi, ecx
                lea     ebx, [ebx+ebp+455A14EDh]
                and     edi, eax
                mov     ebp, [esi+34h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 0Ch
                add     ebx, ecx
                xor     edi, ebx
                lea     eax, [eax+ebp-561C16FBh]
                and     edi, edx
                mov     ebp, [esi+8]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 5
                add     eax, ebx
                xor     edi, eax
                lea     edx, [edx+ebp-3105C08h]
                and     edi, ecx
                mov     ebp, [esi+1Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                add     edx, eax
                xor     edi, edx
                lea     ecx, [ecx+ebp+676F02D9h]
                and     edi, ebx
                mov     ebp, [esi+30h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Eh
                add     ecx, edx
                xor     edi, ecx
                lea     ebx, [ebx+ebp-72D5B376h]
                and     edi, eax
                mov     ebp, [esi+14h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 0Ch
                add     ebx, ecx
                xor     edi, edx
                lea     eax, [eax+ebp-5C6BEh]
                xor     edi, ebx
                mov     ebp, [esi+20h]
                add     eax, edi
                rol     eax, 4
                lea     edx, [edx+ebp-788E097Fh]
                mov     edi, ebx
                add     eax, ebx
                xor     edi, ecx
                mov     ebp, [esi+2Ch]
                xor     edi, eax
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Bh
                add     edx, eax
                xor     edi, ebx
                lea     ecx, [ecx+ebp+6D9D6122h]
                xor     edi, edx
                mov     ebp, [esi+38h]
                add     ecx, edi
                rol     ecx, 10h
                lea     ebx, [ebx+ebp-21AC7F4h]
                mov     edi, edx
                add     ecx, edx
                xor     edi, eax
                mov     ebp, [esi+4]
                xor     edi, ecx
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 9
                add     ebx, ecx
                xor     edi, edx
                lea     eax, [eax+ebp-5B4115BCh]
                xor     edi, ebx
                mov     ebp, [esi+10h]
                add     eax, edi
                rol     eax, 4
                lea     edx, [edx+ebp+4BDECFA9h]
                mov     edi, ebx
                add     eax, ebx
                xor     edi, ecx
                mov     ebp, [esi+1Ch]
                xor     edi, eax
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Bh
                add     edx, eax
                xor     edi, ebx
                lea     ecx, [ecx+ebp-944B4A0h]
                xor     edi, edx
                mov     ebp, [esi+28h]
                add     ecx, edi
                rol     ecx, 10h
                lea     ebx, [ebx+ebp-41404390h]
                mov     edi, edx
                add     ecx, edx
                xor     edi, eax
                mov     ebp, [esi+34h]
                xor     edi, ecx
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 9
                add     ebx, ecx
                xor     edi, edx
                lea     eax, [eax+ebp+289B7EC6h]
                xor     edi, ebx
                mov     ebp, [esi]
                add     eax, edi
                rol     eax, 4
                lea     edx, [edx+ebp-155ED806h]
                mov     edi, ebx
                add     eax, ebx
                xor     edi, ecx
                mov     ebp, [esi+0Ch]
                xor     edi, eax
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Bh
                add     edx, eax
                xor     edi, ebx
                lea     ecx, [ecx+ebp-2B10CF7Bh]
                xor     edi, edx
                mov     ebp, [esi+18h]
                add     ecx, edi
                rol     ecx, 10h
                lea     ebx, [ebx+ebp+4881D05h]
                mov     edi, edx
                add     ecx, edx
                xor     edi, eax
                mov     ebp, [esi+24h]
                xor     edi, ecx
                add     ebx, edi
                mov     edi, ecx
                ror     ebx, 9
                add     ebx, ecx
                xor     edi, edx
                lea     eax, [eax+ebp-262B2FC7h]
                xor     edi, ebx
                mov     ebp, [esi+30h]
                add     eax, edi
                rol     eax, 4
                lea     edx, [edx+ebp-1924661Bh]
                mov     edi, ebx
                add     eax, ebx
                xor     edi, ecx
                mov     ebp, [esi+3Ch]
                xor     edi, eax
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Bh
                add     edx, eax
                xor     edi, ebx
                lea     ecx, [ecx+ebp+1FA27CF8h]
                xor     edi, edx
                mov     ebp, [esi+8]
                add     ecx, edi
                rol     ecx, 10h
                lea     ebx, [ebx+ebp-3B53A99Bh]
                mov     edi, edx
                add     ecx, edx
                xor     edi, eax
                mov     ebp, [esi]
                xor     edi, ecx
                add     ebx, edi
                mov     edi, edx
                ror     ebx, 9
                add     ebx, ecx
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp-0BD6DDBCh]
                or      edi, ebx
                mov     ebp, [esi+1Ch]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ecx
                rol     eax, 6
                add     eax, ebx
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp+432AFF97h]
                or      edi, eax
                mov     ebp, [esi+38h]
                xor     edi, ebx
                add     edx, edi
                mov     edi, ebx
                rol     edx, 0Ah
                add     edx, eax
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp-546BDC59h]
                or      edi, edx
                mov     ebp, [esi+14h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 0Fh
                add     ecx, edx
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp-36C5FC7h]
                or      edi, ecx
                mov     ebp, [esi+30h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, edx
                ror     ebx, 0Bh
                add     ebx, ecx
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+655B59C3h]
                or      edi, ebx
                mov     ebp, [esi+0Ch]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ecx
                rol     eax, 6
                add     eax, ebx
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp-70F3336Eh]
                or      edi, eax
                mov     ebp, [esi+28h]
                xor     edi, ebx
                add     edx, edi
                mov     edi, ebx
                rol     edx, 0Ah
                add     edx, eax
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp-100B83h]
                or      edi, edx
                mov     ebp, [esi+4]
                xor     edi, eax
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 0Fh
                add     ecx, edx
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp-7A7BA22Fh]
                or      edi, ecx
                mov     ebp, [esi+20h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, edx
                ror     ebx, 0Bh
                add     ebx, ecx
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+6FA87E4Fh]
                or      edi, ebx
                mov     ebp, [esi+3Ch]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ecx
                rol     eax, 6
                add     eax, ebx
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp-1D31920h]
                or      edi, eax
                mov     ebp, [esi+18h]
                xor     edi, ebx
                add     edx, edi
                mov     edi, ebx
                rol     edx, 0Ah
                add     edx, eax
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp-5CFEBCECh]
                or      edi, edx
                mov     ebp, [esi+34h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 0Fh
                add     ecx, edx
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp+4E0811A1h]
                or      edi, ecx
                mov     ebp, [esi+10h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, edx
                ror     ebx, 0Bh
                add     ebx, ecx
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp-8AC817Eh]
                or      edi, ebx
                mov     ebp, [esi+2Ch]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ecx
                rol     eax, 6
                add     eax, ebx
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp-42C50DCBh]
                or      edi, eax
                mov     ebp, [esi+8]
                xor     edi, ebx
                add     edx, edi
                mov     edi, ebx
                rol     edx, 0Ah
                add     edx, eax
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+2AD7D2BBh]
                or      edi, edx
                mov     ebp, [esi+24h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 0Fh
                add     ecx, edx
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp-14792C6Fh]
                or      edi, ecx
                xor     edi, edx
                add     ebx, edi
                ror     ebx, 0Bh
                add     ebx, ecx
                pop     edi
                add     [edi], eax
                add     [edi+4], ebx
                add     [edi+8], ecx
                add     [edi+0Ch], edx


                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;
{$ENDIF}

{$IFDEF THash_RipeMD128_asm}
procedure THash_RipeMD128.DoTransform(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THash_RipeMD128.FDigest
                mov     esi, edx
                push    ebp

                mov     eax, [edi]
                mov     ebx, [edi+4]
                push    edi
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                add     esp, 0FFFFFFF0h
                mov     edi, edx
                xor     edi, ecx
                mov     ebp, [esi]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Bh
                xor     edi, ebx
                mov     ebp, [esi+4]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, ebx
                rol     edx, 0Eh
                xor     edi, eax
                mov     ebp, [esi+8]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 0Fh
                xor     edi, edx
                mov     ebp, [esi+0Ch]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 0Ch
                xor     edi, ecx
                mov     ebp, [esi+10h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ecx
                rol     eax, 5
                xor     edi, ebx
                mov     ebp, [esi+14h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, ebx
                rol     edx, 8
                xor     edi, eax
                mov     ebp, [esi+18h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 7
                xor     edi, edx
                mov     ebp, [esi+1Ch]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 9
                xor     edi, ecx
                mov     ebp, [esi+20h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Bh
                xor     edi, ebx
                mov     ebp, [esi+24h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, ebx
                rol     edx, 0Dh
                xor     edi, eax
                mov     ebp, [esi+28h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 0Eh
                xor     edi, edx
                mov     ebp, [esi+2Ch]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 0Fh
                xor     edi, ecx
                mov     ebp, [esi+30h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ecx
                rol     eax, 6
                xor     edi, ebx
                mov     ebp, [esi+34h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, ebx
                rol     edx, 7
                xor     edi, eax
                mov     ebp, [esi+38h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 9
                xor     edi, edx
                mov     ebp, [esi+3Ch]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                rol     ebx, 8
                mov     ebp, [esi+1Ch]
                mov     edi, ecx
                xor     edi, edx
                lea     eax, [eax+ebp+5A827999h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+10h]
                rol     eax, 7
                and     ebp, eax
                lea     edx, [edx+edi+5A827999h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+34h]
                rol     edx, 6
                xor     edi, ebx
                lea     ecx, [ecx+ebp+5A827999h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+4]
                rol     ecx, 8
                and     ebp, ecx
                lea     ebx, [ebx+edi+5A827999h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+28h]
                rol     ebx, 0Dh
                xor     edi, edx
                lea     eax, [eax+ebp+5A827999h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+18h]
                rol     eax, 0Bh
                and     ebp, eax
                lea     edx, [edx+edi+5A827999h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+3Ch]
                rol     edx, 9
                xor     edi, ebx
                lea     ecx, [ecx+ebp+5A827999h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+0Ch]
                rol     ecx, 7
                and     ebp, ecx
                lea     ebx, [ebx+edi+5A827999h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+30h]
                rol     ebx, 0Fh
                xor     edi, edx
                lea     eax, [eax+ebp+5A827999h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi]
                rol     eax, 7
                and     ebp, eax
                lea     edx, [edx+edi+5A827999h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+24h]
                rol     edx, 0Ch
                xor     edi, ebx
                lea     ecx, [ecx+ebp+5A827999h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+14h]
                rol     ecx, 0Fh
                and     ebp, ecx
                lea     ebx, [ebx+edi+5A827999h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+8]
                rol     ebx, 9
                xor     edi, edx
                lea     eax, [eax+ebp+5A827999h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+38h]
                rol     eax, 0Bh
                and     ebp, eax
                lea     edx, [edx+edi+5A827999h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+2Ch]
                rol     edx, 7
                xor     edi, ebx
                lea     ecx, [ecx+ebp+5A827999h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+20h]
                rol     ecx, 0Dh
                and     ebp, ecx
                lea     ebx, [ebx+edi+5A827999h]
                xor     ebp, eax
                add     ebx, ebp
                rol     ebx, 0Ch
                mov     edi, ecx
                mov     ebp, [esi+0Ch]
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+6ED9EBA1h]
                or      edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, 0FFFFFFFFh
                add     eax, edi
                mov     edi, [esi+28h]
                rol     eax, 0Bh
                or      ebp, eax
                lea     edx, [edx+edi+6ED9EBA1h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+38h]
                rol     edx, 0Dh
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+6ED9EBA1h]
                or      edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, 0FFFFFFFFh
                add     ecx, edi
                mov     edi, [esi+10h]
                rol     ecx, 6
                or      ebp, ecx
                lea     ebx, [ebx+edi+6ED9EBA1h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+24h]
                rol     ebx, 7
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+6ED9EBA1h]
                or      edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, 0FFFFFFFFh
                add     eax, edi
                mov     edi, [esi+3Ch]
                rol     eax, 0Eh
                or      ebp, eax
                lea     edx, [edx+edi+6ED9EBA1h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+20h]
                rol     edx, 9
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+6ED9EBA1h]
                or      edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, 0FFFFFFFFh
                add     ecx, edi
                mov     edi, [esi+4]
                rol     ecx, 0Dh
                or      ebp, ecx
                lea     ebx, [ebx+edi+6ED9EBA1h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+8]
                rol     ebx, 0Fh
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+6ED9EBA1h]
                or      edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, 0FFFFFFFFh
                add     eax, edi
                mov     edi, [esi+1Ch]
                rol     eax, 0Eh
                or      ebp, eax
                lea     edx, [edx+edi+6ED9EBA1h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi]
                rol     edx, 8
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+6ED9EBA1h]
                or      edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, 0FFFFFFFFh
                add     ecx, edi
                mov     edi, [esi+18h]
                rol     ecx, 0Dh
                or      ebp, ecx
                lea     ebx, [ebx+edi+6ED9EBA1h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+34h]
                rol     ebx, 6
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+6ED9EBA1h]
                or      edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, 0FFFFFFFFh
                add     eax, edi
                mov     edi, [esi+2Ch]
                rol     eax, 5
                or      ebp, eax
                lea     edx, [edx+edi+6ED9EBA1h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+14h]
                rol     edx, 0Ch
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+6ED9EBA1h]
                or      edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, 0FFFFFFFFh
                add     ecx, edi
                mov     edi, [esi+30h]
                rol     ecx, 7
                or      ebp, ecx
                lea     ebx, [ebx+edi+6ED9EBA1h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+4]
                rol     ebx, 5
                xor     edi, ebx
                lea     eax, [eax+ebp-70E44324h]
                and     edi, edx
                mov     ebp, [esi+24h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Bh
                xor     edi, eax
                lea     edx, [edx+ebp-70E44324h]
                and     edi, ecx
                mov     ebp, [esi+2Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Ch
                xor     edi, edx
                lea     ecx, [ecx+ebp-70E44324h]
                and     edi, ebx
                mov     ebp, [esi+28h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Eh
                xor     edi, ecx
                lea     ebx, [ebx+ebp-70E44324h]
                and     edi, eax
                mov     ebp, [esi]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Fh
                xor     edi, ebx
                lea     eax, [eax+ebp-70E44324h]
                and     edi, edx
                mov     ebp, [esi+20h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Eh
                xor     edi, eax
                lea     edx, [edx+ebp-70E44324h]
                and     edi, ecx
                mov     ebp, [esi+30h]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Fh
                xor     edi, edx
                lea     ecx, [ecx+ebp-70E44324h]
                and     edi, ebx
                mov     ebp, [esi+10h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 9
                xor     edi, ecx
                lea     ebx, [ebx+ebp-70E44324h]
                and     edi, eax
                mov     ebp, [esi+34h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 8
                xor     edi, ebx
                lea     eax, [eax+ebp-70E44324h]
                and     edi, edx
                mov     ebp, [esi+0Ch]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 9
                xor     edi, eax
                lea     edx, [edx+ebp-70E44324h]
                and     edi, ecx
                mov     ebp, [esi+1Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Eh
                xor     edi, edx
                lea     ecx, [ecx+ebp-70E44324h]
                and     edi, ebx
                mov     ebp, [esi+3Ch]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 5
                xor     edi, ecx
                lea     ebx, [ebx+ebp-70E44324h]
                and     edi, eax
                mov     ebp, [esi+38h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 6
                xor     edi, ebx
                lea     eax, [eax+ebp-70E44324h]
                and     edi, edx
                mov     ebp, [esi+14h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 8
                xor     edi, eax
                lea     edx, [edx+ebp-70E44324h]
                and     edi, ecx
                mov     ebp, [esi+18h]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 6
                xor     edi, edx
                lea     ecx, [ecx+ebp-70E44324h]
                and     edi, ebx
                mov     ebp, [esi+8]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 5
                xor     edi, ecx
                lea     ebx, [ebx+ebp-70E44324h]
                and     edi, eax
                xor     edi, edx
                add     ebx, edi
                rol     ebx, 0Ch
                mov     edi, [esp+10h]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp+8], ecx
                mov     ecx, [edi+8]
                mov     ebp, [esi+14h]
                mov     [esp+0Ch], edx
                mov     edx, [edi+0Ch]
                mov     edi, ecx
                xor     edi, ebx
                lea     eax, [eax+ebp+50A28BE6h]
                and     edi, edx
                mov     ebp, [esi+38h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 8
                xor     edi, eax
                lea     edx, [edx+ebp+50A28BE6h]
                and     edi, ecx
                mov     ebp, [esi+1Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                xor     edi, edx
                lea     ecx, [ecx+ebp+50A28BE6h]
                and     edi, ebx
                mov     ebp, [esi]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 9
                xor     edi, ecx
                lea     ebx, [ebx+ebp+50A28BE6h]
                and     edi, eax
                mov     ebp, [esi+24h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Bh
                xor     edi, ebx
                lea     eax, [eax+ebp+50A28BE6h]
                and     edi, edx
                mov     ebp, [esi+8]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Dh
                xor     edi, eax
                lea     edx, [edx+ebp+50A28BE6h]
                and     edi, ecx
                mov     ebp, [esi+2Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Fh
                xor     edi, edx
                lea     ecx, [ecx+ebp+50A28BE6h]
                and     edi, ebx
                mov     ebp, [esi+10h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Fh
                xor     edi, ecx
                lea     ebx, [ebx+ebp+50A28BE6h]
                and     edi, eax
                mov     ebp, [esi+34h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 5
                xor     edi, ebx
                lea     eax, [eax+ebp+50A28BE6h]
                and     edi, edx
                mov     ebp, [esi+18h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 7
                xor     edi, eax
                lea     edx, [edx+ebp+50A28BE6h]
                and     edi, ecx
                mov     ebp, [esi+3Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 7
                xor     edi, edx
                lea     ecx, [ecx+ebp+50A28BE6h]
                and     edi, ebx
                mov     ebp, [esi+20h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 8
                xor     edi, ecx
                lea     ebx, [ebx+ebp+50A28BE6h]
                and     edi, eax
                mov     ebp, [esi+4]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Bh
                xor     edi, ebx
                lea     eax, [eax+ebp+50A28BE6h]
                and     edi, edx
                mov     ebp, [esi+28h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Eh
                xor     edi, eax
                lea     edx, [edx+ebp+50A28BE6h]
                and     edi, ecx
                mov     ebp, [esi+0Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Eh
                xor     edi, edx
                lea     ecx, [ecx+ebp+50A28BE6h]
                and     edi, ebx
                mov     ebp, [esi+30h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Ch
                xor     edi, ecx
                lea     ebx, [ebx+ebp+50A28BE6h]
                and     edi, eax
                mov     ebp, [esi+18h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 6
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+5C4DD124h]
                or      edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, 0FFFFFFFFh
                add     eax, edi
                mov     edi, [esi+2Ch]
                rol     eax, 9
                or      ebp, eax
                lea     edx, [edx+edi+5C4DD124h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+0Ch]
                rol     edx, 0Dh
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+5C4DD124h]
                or      edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, 0FFFFFFFFh
                add     ecx, edi
                mov     edi, [esi+1Ch]
                rol     ecx, 0Fh
                or      ebp, ecx
                lea     ebx, [ebx+edi+5C4DD124h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi]
                rol     ebx, 7
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+5C4DD124h]
                or      edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, 0FFFFFFFFh
                add     eax, edi
                mov     edi, [esi+34h]
                rol     eax, 0Ch
                or      ebp, eax
                lea     edx, [edx+edi+5C4DD124h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+14h]
                rol     edx, 8
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+5C4DD124h]
                or      edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, 0FFFFFFFFh
                add     ecx, edi
                mov     edi, [esi+28h]
                rol     ecx, 9
                or      ebp, ecx
                lea     ebx, [ebx+edi+5C4DD124h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+38h]
                rol     ebx, 0Bh
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+5C4DD124h]
                or      edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, 0FFFFFFFFh
                add     eax, edi
                mov     edi, [esi+3Ch]
                rol     eax, 7
                or      ebp, eax
                lea     edx, [edx+edi+5C4DD124h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+20h]
                rol     edx, 7
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+5C4DD124h]
                or      edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, 0FFFFFFFFh
                add     ecx, edi
                mov     edi, [esi+30h]
                rol     ecx, 0Ch
                or      ebp, ecx
                lea     ebx, [ebx+edi+5C4DD124h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+10h]
                rol     ebx, 7
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+5C4DD124h]
                or      edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, 0FFFFFFFFh
                add     eax, edi
                mov     edi, [esi+24h]
                rol     eax, 6
                or      ebp, eax
                lea     edx, [edx+edi+5C4DD124h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+4]
                rol     edx, 0Fh
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+5C4DD124h]
                or      edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, 0FFFFFFFFh
                add     ecx, edi
                mov     edi, [esi+8]
                rol     ecx, 0Dh
                or      ebp, ecx
                lea     ebx, [ebx+edi+5C4DD124h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+3Ch]
                rol     ebx, 0Bh
                xor     edi, edx
                lea     eax, [eax+ebp+6D703EF3h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+14h]
                rol     eax, 9
                and     ebp, eax
                lea     edx, [edx+edi+6D703EF3h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+4]
                rol     edx, 7
                xor     edi, ebx
                lea     ecx, [ecx+ebp+6D703EF3h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+0Ch]
                rol     ecx, 0Fh
                and     ebp, ecx
                lea     ebx, [ebx+edi+6D703EF3h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+1Ch]
                rol     ebx, 0Bh
                xor     edi, edx
                lea     eax, [eax+ebp+6D703EF3h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+38h]
                rol     eax, 8
                and     ebp, eax
                lea     edx, [edx+edi+6D703EF3h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+18h]
                rol     edx, 6
                xor     edi, ebx
                lea     ecx, [ecx+ebp+6D703EF3h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+24h]
                rol     ecx, 6
                and     ebp, ecx
                lea     ebx, [ebx+edi+6D703EF3h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+2Ch]
                rol     ebx, 0Eh
                xor     edi, edx
                lea     eax, [eax+ebp+6D703EF3h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+20h]
                rol     eax, 0Ch
                and     ebp, eax
                lea     edx, [edx+edi+6D703EF3h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+30h]
                rol     edx, 0Dh
                xor     edi, ebx
                lea     ecx, [ecx+ebp+6D703EF3h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+8]
                rol     ecx, 5
                and     ebp, ecx
                lea     ebx, [ebx+edi+6D703EF3h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+28h]
                rol     ebx, 0Eh
                xor     edi, edx
                lea     eax, [eax+ebp+6D703EF3h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi]
                rol     eax, 0Dh
                and     ebp, eax
                lea     edx, [edx+edi+6D703EF3h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+10h]
                rol     edx, 0Dh
                xor     edi, ebx
                lea     ecx, [ecx+ebp+6D703EF3h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+34h]
                rol     ecx, 7
                and     ebp, ecx
                lea     ebx, [ebx+edi+6D703EF3h]
                xor     ebp, eax
                add     ebx, ebp
                rol     ebx, 5
                mov     edi, edx
                xor     edi, ecx
                mov     ebp, [esi+20h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Fh
                xor     edi, ebx
                mov     ebp, [esi+18h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, ebx
                rol     edx, 5
                xor     edi, eax
                mov     ebp, [esi+10h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 8
                xor     edi, edx
                mov     ebp, [esi+4]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 0Bh
                xor     edi, ecx
                mov     ebp, [esi+0Ch]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Eh
                xor     edi, ebx
                mov     ebp, [esi+2Ch]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, ebx
                rol     edx, 0Eh
                xor     edi, eax
                mov     ebp, [esi+3Ch]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 6
                xor     edi, edx
                mov     ebp, [esi]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 0Eh
                xor     edi, ecx
                mov     ebp, [esi+14h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ecx
                rol     eax, 6
                xor     edi, ebx
                mov     ebp, [esi+30h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, ebx
                rol     edx, 9
                xor     edi, eax
                mov     ebp, [esi+8]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 0Ch
                xor     edi, edx
                mov     ebp, [esi+34h]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 9
                xor     edi, ecx
                mov     ebp, [esi+24h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Ch
                xor     edi, ebx
                mov     ebp, [esi+1Ch]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, ebx
                rol     edx, 5
                xor     edi, eax
                mov     ebp, [esi+28h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, eax
                rol     ecx, 0Fh
                xor     edi, edx
                mov     ebp, [esi+38h]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                rol     ebx, 8
                mov     edi, [esp+10h]
                mov     ebp, [esp+8]
                mov     esi, [esp+0Ch]
                add     edx, ebp
                add     eax, esi
                mov     ebp, [edi+4]
                mov     esi, [edi+8]
                add     edx, ebp
                add     eax, esi
                mov     [edi+4], eax
                mov     ebp, [esp]
                mov     esi, [esp+4]
                add     ebx, ebp
                add     ecx, esi
                mov     ebp, [edi+0Ch]
                mov     esi, [edi]
                add     ebx, ebp
                add     ecx, esi
                mov     [edi+8], ebx
                add     esp, 14h
                mov     [edi+0Ch], ecx
                mov     [edi], edx


                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;
{$ENDIF}

{$IFDEF THash_RipeMD160_asm}
procedure THash_RipeMD160.DoTransform(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THash_RipeMD160.FDigest
                mov     esi, edx
                push    ebp

                mov     eax, [edi]
                mov     ebx, [edi+4]
                push    edi
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     ebp, [edi+10h]
                add     esp, 0FFFFFFECh
                mov     edi, edx
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Bh
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+4]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 0Eh
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+8]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Fh
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+0Ch]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Ch
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+10h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 5
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+14h]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 8
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+18h]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 7
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+1Ch]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+20h]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+24h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 0Dh
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+28h]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+2Ch]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+30h]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 6
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+34h]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 7
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+38h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 9
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+3Ch]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 8
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+1Ch]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, ebx
                rol     ebp, 7
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+10h]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+5A827999h]
                mov     edi, eax
                rol     edx, 6
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+34h]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, ebp
                rol     ecx, 8
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+4]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 0Dh
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi+28h]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 0Bh
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+18h]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, ebx
                rol     ebp, 9
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+3Ch]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+5A827999h]
                mov     edi, eax
                rol     edx, 7
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+0Ch]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, ebp
                rol     ecx, 0Fh
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+30h]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 0Ch
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+24h]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, ebx
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+14h]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+5A827999h]
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+8]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, ebp
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+38h]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi+2Ch]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 0Dh
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+20h]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, ebx
                rol     ebp, 0Ch
                add     ebp, edx
                mov     edi, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi+0Ch]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edx, 0Bh
                xor     edi, 0FFFFFFFFh
                add     edx, ecx
                or      edi, edx
                add     ecx, [esi+28h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     ecx, 0Dh
                xor     edi, 0FFFFFFFFh
                add     ecx, ebx
                or      edi, ecx
                add     ebx, [esi+38h]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     ebx, 6
                xor     edi, 0FFFFFFFFh
                add     ebx, eax
                or      edi, ebx
                add     eax, [esi+10h]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     eax, 7
                xor     edi, 0FFFFFFFFh
                add     eax, ebp
                or      edi, eax
                add     ebp, [esi+24h]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     ebp, 0Eh
                xor     edi, 0FFFFFFFFh
                add     ebp, edx
                or      edi, ebp
                add     edx, [esi+3Ch]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edx, 9
                xor     edi, 0FFFFFFFFh
                add     edx, ecx
                or      edi, edx
                add     ecx, [esi+20h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     ecx, 0Dh
                xor     edi, 0FFFFFFFFh
                add     ecx, ebx
                or      edi, ecx
                add     ebx, [esi+4]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     ebx, 0Fh
                xor     edi, 0FFFFFFFFh
                add     ebx, eax
                or      edi, ebx
                add     eax, [esi+8]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     eax, 0Eh
                xor     edi, 0FFFFFFFFh
                add     eax, ebp
                or      edi, eax
                add     ebp, [esi+1Ch]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     ebp, 8
                xor     edi, 0FFFFFFFFh
                add     ebp, edx
                or      edi, ebp
                add     edx, [esi]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edx, 0Dh
                xor     edi, 0FFFFFFFFh
                add     edx, ecx
                or      edi, edx
                add     ecx, [esi+18h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     ecx, 6
                xor     edi, 0FFFFFFFFh
                add     ecx, ebx
                or      edi, ecx
                add     ebx, [esi+34h]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     ebx, 5
                xor     edi, 0FFFFFFFFh
                add     ebx, eax
                or      edi, ebx
                add     eax, [esi+2Ch]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     eax, 0Ch
                xor     edi, 0FFFFFFFFh
                add     eax, ebp
                or      edi, eax
                add     ebp, [esi+14h]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     ebp, 7
                xor     edi, 0FFFFFFFFh
                add     ebp, edx
                or      edi, ebp
                add     edx, [esi+30h]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edx, 5
                xor     edi, 0FFFFFFFFh
                add     edx, ecx
                mov     edi, ebp
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+4]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-70E44324h]
                mov     edi, edx
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+24h]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-70E44324h]
                mov     edi, ecx
                rol     ebx, 0Ch
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+2Ch]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-70E44324h]
                mov     edi, ebx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+28h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-70E44324h]
                mov     edi, eax
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi-70E44324h]
                mov     edi, ebp
                rol     edx, 0Eh
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+20h]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-70E44324h]
                mov     edi, edx
                rol     ecx, 0Fh
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+30h]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-70E44324h]
                mov     edi, ecx
                rol     ebx, 9
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+10h]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-70E44324h]
                mov     edi, ebx
                rol     eax, 8
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+34h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-70E44324h]
                mov     edi, eax
                rol     ebp, 9
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+0Ch]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi-70E44324h]
                mov     edi, ebp
                rol     edx, 0Eh
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+1Ch]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-70E44324h]
                mov     edi, edx
                rol     ecx, 5
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+3Ch]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-70E44324h]
                mov     edi, ecx
                rol     ebx, 6
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+38h]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-70E44324h]
                mov     edi, ebx
                rol     eax, 8
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+14h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-70E44324h]
                mov     edi, eax
                rol     ebp, 6
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+18h]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi-70E44324h]
                mov     edi, ebp
                rol     edx, 5
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+8]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-70E44324h]
                mov     edi, edx
                rol     ecx, 0Ch
                add     ecx, ebx
                mov     edi, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+10h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-56AC02B2h]
                mov     edi, edx
                rol     ebx, 9
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-56AC02B2h]
                mov     edi, ecx
                rol     eax, 0Fh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+14h]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-56AC02B2h]
                mov     edi, ebx
                rol     ebp, 5
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+24h]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi-56AC02B2h]
                mov     edi, eax
                rol     edx, 0Bh
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+1Ch]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-56AC02B2h]
                mov     edi, ebp
                rol     ecx, 6
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+30h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-56AC02B2h]
                mov     edi, edx
                rol     ebx, 8
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+8]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-56AC02B2h]
                mov     edi, ecx
                rol     eax, 0Dh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+28h]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-56AC02B2h]
                mov     edi, ebx
                rol     ebp, 0Ch
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+38h]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi-56AC02B2h]
                mov     edi, eax
                rol     edx, 5
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+4]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-56AC02B2h]
                mov     edi, ebp
                rol     ecx, 0Ch
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+0Ch]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-56AC02B2h]
                mov     edi, edx
                rol     ebx, 0Dh
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+20h]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-56AC02B2h]
                mov     edi, ecx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+2Ch]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-56AC02B2h]
                mov     edi, ebx
                rol     ebp, 0Bh
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+18h]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi-56AC02B2h]
                mov     edi, eax
                rol     edx, 8
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+3Ch]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-56AC02B2h]
                mov     edi, ebp
                rol     ecx, 5
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+34h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-56AC02B2h]
                mov     edi, edx
                rol     ebx, 6
                add     ebx, eax
                mov     edi, [esp+14h]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [edi+10h]
                mov     edi, edx
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+14h]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+50A28BE6h]
                mov     edi, ecx
                rol     eax, 8
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+38h]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+50A28BE6h]
                mov     edi, ebx
                rol     ebp, 9
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+1Ch]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi+50A28BE6h]
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+50A28BE6h]
                mov     edi, ebp
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+24h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+50A28BE6h]
                mov     edi, edx
                rol     ebx, 0Dh
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+8]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+50A28BE6h]
                mov     edi, ecx
                rol     eax, 0Fh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+2Ch]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+50A28BE6h]
                mov     edi, ebx
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+10h]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi+50A28BE6h]
                mov     edi, eax
                rol     edx, 5
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+34h]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+50A28BE6h]
                mov     edi, ebp
                rol     ecx, 7
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+18h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+50A28BE6h]
                mov     edi, edx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+3Ch]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+50A28BE6h]
                mov     edi, ecx
                rol     eax, 8
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+20h]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+50A28BE6h]
                mov     edi, ebx
                rol     ebp, 0Bh
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+4]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi+50A28BE6h]
                mov     edi, eax
                rol     edx, 0Eh
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+28h]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+50A28BE6h]
                mov     edi, ebp
                rol     ecx, 0Eh
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+0Ch]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+50A28BE6h]
                mov     edi, edx
                rol     ebx, 0Ch
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+30h]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+50A28BE6h]
                mov     edi, ecx
                rol     eax, 6
                add     eax, ebp
                mov     edi, ebx
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+18h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5C4DD124h]
                mov     edi, eax
                rol     ebp, 9
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+2Ch]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi+5C4DD124h]
                mov     edi, ebp
                rol     edx, 0Dh
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+0Ch]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5C4DD124h]
                mov     edi, edx
                rol     ecx, 0Fh
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+1Ch]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5C4DD124h]
                mov     edi, ecx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5C4DD124h]
                mov     edi, ebx
                rol     eax, 0Ch
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+34h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5C4DD124h]
                mov     edi, eax
                rol     ebp, 8
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+14h]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi+5C4DD124h]
                mov     edi, ebp
                rol     edx, 9
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+28h]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5C4DD124h]
                mov     edi, edx
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+38h]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5C4DD124h]
                mov     edi, ecx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+3Ch]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5C4DD124h]
                mov     edi, ebx
                rol     eax, 7
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+20h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5C4DD124h]
                mov     edi, eax
                rol     ebp, 0Ch
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+30h]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi+5C4DD124h]
                mov     edi, ebp
                rol     edx, 7
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+10h]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5C4DD124h]
                mov     edi, edx
                rol     ecx, 6
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+24h]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5C4DD124h]
                mov     edi, ecx
                rol     ebx, 0Fh
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+4]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5C4DD124h]
                mov     edi, ebx
                rol     eax, 0Dh
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+8]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5C4DD124h]
                mov     edi, eax
                rol     ebp, 0Bh
                add     ebp, edx
                mov     edi, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi+3Ch]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6D703EF3h]
                mov     edi, ebp
                rol     edx, 9
                xor     edi, 0FFFFFFFFh
                add     edx, ecx
                or      edi, edx
                add     ecx, [esi+14h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6D703EF3h]
                mov     edi, edx
                rol     ecx, 7
                xor     edi, 0FFFFFFFFh
                add     ecx, ebx
                or      edi, ecx
                add     ebx, [esi+4]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6D703EF3h]
                mov     edi, ecx
                rol     ebx, 0Fh
                xor     edi, 0FFFFFFFFh
                add     ebx, eax
                or      edi, ebx
                add     eax, [esi+0Ch]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6D703EF3h]
                mov     edi, ebx
                rol     eax, 0Bh
                xor     edi, 0FFFFFFFFh
                add     eax, ebp
                or      edi, eax
                add     ebp, [esi+1Ch]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6D703EF3h]
                mov     edi, eax
                rol     ebp, 8
                xor     edi, 0FFFFFFFFh
                add     ebp, edx
                or      edi, ebp
                add     edx, [esi+38h]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6D703EF3h]
                mov     edi, ebp
                rol     edx, 6
                xor     edi, 0FFFFFFFFh
                add     edx, ecx
                or      edi, edx
                add     ecx, [esi+18h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6D703EF3h]
                mov     edi, edx
                rol     ecx, 6
                xor     edi, 0FFFFFFFFh
                add     ecx, ebx
                or      edi, ecx
                add     ebx, [esi+24h]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6D703EF3h]
                mov     edi, ecx
                rol     ebx, 0Eh
                xor     edi, 0FFFFFFFFh
                add     ebx, eax
                or      edi, ebx
                add     eax, [esi+2Ch]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6D703EF3h]
                mov     edi, ebx
                rol     eax, 0Ch
                xor     edi, 0FFFFFFFFh
                add     eax, ebp
                or      edi, eax
                add     ebp, [esi+20h]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6D703EF3h]
                mov     edi, eax
                rol     ebp, 0Dh
                xor     edi, 0FFFFFFFFh
                add     ebp, edx
                or      edi, ebp
                add     edx, [esi+30h]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6D703EF3h]
                mov     edi, ebp
                rol     edx, 5
                xor     edi, 0FFFFFFFFh
                add     edx, ecx
                or      edi, edx
                add     ecx, [esi+8]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6D703EF3h]
                mov     edi, edx
                rol     ecx, 0Eh
                xor     edi, 0FFFFFFFFh
                add     ecx, ebx
                or      edi, ecx
                add     ebx, [esi+28h]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6D703EF3h]
                mov     edi, ecx
                rol     ebx, 0Dh
                xor     edi, 0FFFFFFFFh
                add     ebx, eax
                or      edi, ebx
                add     eax, [esi]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6D703EF3h]
                mov     edi, ebx
                rol     eax, 0Dh
                xor     edi, 0FFFFFFFFh
                add     eax, ebp
                or      edi, eax
                add     ebp, [esi+10h]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6D703EF3h]
                mov     edi, eax
                rol     ebp, 7
                xor     edi, 0FFFFFFFFh
                add     ebp, edx
                or      edi, ebp
                add     edx, [esi+34h]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6D703EF3h]
                mov     edi, ebp
                rol     edx, 5
                xor     edi, 0FFFFFFFFh
                add     edx, ecx
                mov     edi, eax
                xor     edi, ebp
                add     ecx, [esi+20h]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+7A6D76E9h]
                mov     edi, ebp
                rol     ecx, 0Fh
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+18h]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+7A6D76E9h]
                mov     edi, edx
                rol     ebx, 5
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi+10h]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+7A6D76E9h]
                mov     edi, ecx
                rol     eax, 8
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+4]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+7A6D76E9h]
                mov     edi, ebx
                rol     ebp, 0Bh
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+0Ch]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+7A6D76E9h]
                mov     edi, eax
                rol     edx, 0Eh
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+2Ch]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+7A6D76E9h]
                mov     edi, ebp
                rol     ecx, 0Eh
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+3Ch]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+7A6D76E9h]
                mov     edi, edx
                rol     ebx, 6
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+7A6D76E9h]
                mov     edi, ecx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+14h]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+7A6D76E9h]
                mov     edi, ebx
                rol     ebp, 6
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+30h]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+7A6D76E9h]
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+8]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+7A6D76E9h]
                mov     edi, ebp
                rol     ecx, 0Ch
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+34h]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+7A6D76E9h]
                mov     edi, edx
                rol     ebx, 9
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi+24h]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+7A6D76E9h]
                mov     edi, ecx
                rol     eax, 0Ch
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+1Ch]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+7A6D76E9h]
                mov     edi, ebx
                rol     ebp, 5
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+28h]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+7A6D76E9h]
                mov     edi, eax
                rol     edx, 0Fh
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+38h]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+7A6D76E9h]
                mov     edi, ebp
                rol     ecx, 8
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+30h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 8
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+3Ch]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 5
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+28h]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 0Ch
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+10h]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+4]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Ch
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+14h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 5
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+20h]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+1Ch]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 6
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+18h]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 8
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+8]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Dh
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+34h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 6
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+38h]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 5
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+0Ch]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Dh
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+24h]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+2Ch]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 0Bh
                add     ebx, eax
                mov     edi, [esp+14h]
                add     edx, [esp+8]
                mov     esi, [edi+4]
                add     ebp, [esp+0Ch]
                add     edx, esi
                mov     esi, [esp+10h]
                add     ecx, [edi]
                mov     [edi], edx
                mov     edx, [edi+8]
                add     eax, esi
                mov     esi, [edi+0Ch]
                add     ebp, edx
                mov     edx, [esp]
                mov     [edi+4], ebp
                add     eax, esi
                mov     esi, [edi+10h]
                add     ebx, edx
                mov     edx, [esp+4]
                mov     [edi+8], eax
                add     ebx, esi
                add     ecx, edx
                mov     [edi+0Ch], ebx
                add     esp, 18h
                mov     [edi+10h], ecx


                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;
{$ENDIF}

{$IFDEF THash_RipeMD256_asm}
procedure THash_RipeMD256.DoTransform(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THash_RipeMD256.FDigest
                mov     esi, edx
                push    ebp

                mov     eax, [edi]
                mov     ebx, [edi+4]
                push    edi
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                add     esp, 0FFFFFFE0h
                mov     edi, ecx
                xor     edi, edx
                mov     ebp, [esi]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Bh
                xor     edi, ecx
                mov     ebp, [esi+4]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Eh
                xor     edi, ebx
                mov     ebp, [esi+8]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Fh
                xor     edi, eax
                mov     ebp, [esi+0Ch]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Ch
                xor     edi, edx
                mov     ebp, [esi+10h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ebx
                rol     eax, 5
                xor     edi, ecx
                mov     ebp, [esi+14h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, eax
                rol     edx, 8
                xor     edi, ebx
                mov     ebp, [esi+18h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 7
                xor     edi, eax
                mov     ebp, [esi+1Ch]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 9
                xor     edi, edx
                mov     ebp, [esi+20h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Bh
                xor     edi, ecx
                mov     ebp, [esi+24h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Dh
                xor     edi, ebx
                mov     ebp, [esi+28h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Eh
                xor     edi, eax
                mov     ebp, [esi+2Ch]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Fh
                xor     edi, edx
                mov     ebp, [esi+30h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ebx
                rol     eax, 6
                xor     edi, ecx
                mov     ebp, [esi+34h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, eax
                rol     edx, 7
                xor     edi, ebx
                mov     ebp, [esi+38h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 9
                xor     edi, eax
                mov     ebp, [esi+3Ch]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                rol     ebx, 8
                mov     edi, [esp+20h]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     ebp, [esi+14h]
                mov     eax, [edi+10h]
                mov     [esp+8], ecx
                mov     ebx, [edi+14h]
                mov     ecx, [edi+18h]
                mov     [esp+0Ch], edx
                mov     edx, [edi+1Ch]
                mov     edi, ecx
                xor     edi, ebx
                lea     eax, [eax+ebp+50A28BE6h]
                and     edi, edx
                mov     ebp, [esi+38h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 8
                xor     edi, eax
                lea     edx, [edx+ebp+50A28BE6h]
                and     edi, ecx
                mov     ebp, [esi+1Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                xor     edi, edx
                lea     ecx, [ecx+ebp+50A28BE6h]
                and     edi, ebx
                mov     ebp, [esi]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 9
                xor     edi, ecx
                lea     ebx, [ebx+ebp+50A28BE6h]
                and     edi, eax
                mov     ebp, [esi+24h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Bh
                xor     edi, ebx
                lea     eax, [eax+ebp+50A28BE6h]
                and     edi, edx
                mov     ebp, [esi+8]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Dh
                xor     edi, eax
                lea     edx, [edx+ebp+50A28BE6h]
                and     edi, ecx
                mov     ebp, [esi+2Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Fh
                xor     edi, edx
                lea     ecx, [ecx+ebp+50A28BE6h]
                and     edi, ebx
                mov     ebp, [esi+10h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Fh
                xor     edi, ecx
                lea     ebx, [ebx+ebp+50A28BE6h]
                and     edi, eax
                mov     ebp, [esi+34h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 5
                xor     edi, ebx
                lea     eax, [eax+ebp+50A28BE6h]
                and     edi, edx
                mov     ebp, [esi+18h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 7
                xor     edi, eax
                lea     edx, [edx+ebp+50A28BE6h]
                and     edi, ecx
                mov     ebp, [esi+3Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 7
                xor     edi, edx
                lea     ecx, [ecx+ebp+50A28BE6h]
                and     edi, ebx
                mov     ebp, [esi+20h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 8
                xor     edi, ecx
                lea     ebx, [ebx+ebp+50A28BE6h]
                and     edi, eax
                mov     ebp, [esi+4]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Bh
                xor     edi, ebx
                lea     eax, [eax+ebp+50A28BE6h]
                and     edi, edx
                mov     ebp, [esi+28h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Eh
                xor     edi, eax
                lea     edx, [edx+ebp+50A28BE6h]
                and     edi, ecx
                mov     ebp, [esi+0Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Eh
                xor     edi, edx
                lea     ecx, [ecx+ebp+50A28BE6h]
                and     edi, ebx
                mov     ebp, [esi+30h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Ch
                xor     edi, ecx
                lea     ebx, [ebx+ebp+50A28BE6h]
                and     edi, eax
                mov     ebp, [esi+1Ch]
                xor     edi, edx
                add     ebx, edi
                rol     ebx, 6
                mov     [esp+14h], ebx
                mov     ebx, [esp+4]
                mov     [esp+1Ch], edx
                mov     [esp+18h], ecx
                mov     edx, [esp]
                mov     ecx, [esp+8]
                mov     [esp+10h], edx
                mov     edx, [esp+0Ch]
                mov     edi, ecx
                xor     edi, edx
                lea     eax, [eax+ebp+5A827999h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+10h]
                rol     eax, 7
                and     ebp, eax
                lea     edx, [edx+edi+5A827999h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+34h]
                rol     edx, 6
                xor     edi, ebx
                lea     ecx, [ecx+ebp+5A827999h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+4]
                rol     ecx, 8
                and     ebp, ecx
                lea     ebx, [ebx+edi+5A827999h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+28h]
                rol     ebx, 0Dh
                xor     edi, edx
                lea     eax, [eax+ebp+5A827999h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+18h]
                rol     eax, 0Bh
                and     ebp, eax
                lea     edx, [edx+edi+5A827999h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+3Ch]
                rol     edx, 9
                xor     edi, ebx
                lea     ecx, [ecx+ebp+5A827999h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+0Ch]
                rol     ecx, 7
                and     ebp, ecx
                lea     ebx, [ebx+edi+5A827999h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+30h]
                rol     ebx, 0Fh
                xor     edi, edx
                lea     eax, [eax+ebp+5A827999h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi]
                rol     eax, 7
                and     ebp, eax
                lea     edx, [edx+edi+5A827999h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+24h]
                rol     edx, 0Ch
                xor     edi, ebx
                lea     ecx, [ecx+ebp+5A827999h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+14h]
                rol     ecx, 0Fh
                and     ebp, ecx
                lea     ebx, [ebx+edi+5A827999h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+8]
                rol     ebx, 9
                xor     edi, edx
                lea     eax, [eax+ebp+5A827999h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+38h]
                rol     eax, 0Bh
                and     ebp, eax
                lea     edx, [edx+edi+5A827999h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+2Ch]
                rol     edx, 7
                xor     edi, ebx
                lea     ecx, [ecx+ebp+5A827999h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+20h]
                rol     ecx, 0Dh
                and     ebp, ecx
                lea     ebx, [ebx+edi+5A827999h]
                xor     ebp, eax
                add     ebx, ebp
                mov     ebp, [esi+18h]
                rol     ebx, 0Ch
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     [esp+8], ecx
                mov     ecx, [esp+18h]
                mov     [esp+0Ch], edx
                mov     edx, [esp+1Ch]
                mov     edi, ecx
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+5C4DD124h]
                or      edi, ebx
                mov     ebp, [esi+2Ch]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 9
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp+5C4DD124h]
                or      edi, eax
                mov     ebp, [esi+0Ch]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Dh
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+5C4DD124h]
                or      edi, edx
                mov     ebp, [esi+1Ch]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Fh
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp+5C4DD124h]
                or      edi, ecx
                mov     ebp, [esi]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 7
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+5C4DD124h]
                or      edi, ebx
                mov     ebp, [esi+34h]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Ch
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp+5C4DD124h]
                or      edi, eax
                mov     ebp, [esi+14h]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 8
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+5C4DD124h]
                or      edi, edx
                mov     ebp, [esi+28h]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 9
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp+5C4DD124h]
                or      edi, ecx
                mov     ebp, [esi+38h]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Bh
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+5C4DD124h]
                or      edi, ebx
                mov     ebp, [esi+3Ch]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 7
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp+5C4DD124h]
                or      edi, eax
                mov     ebp, [esi+20h]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 7
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+5C4DD124h]
                or      edi, edx
                mov     ebp, [esi+30h]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Ch
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp+5C4DD124h]
                or      edi, ecx
                mov     ebp, [esi+10h]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 7
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+5C4DD124h]
                or      edi, ebx
                mov     ebp, [esi+24h]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 6
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp+5C4DD124h]
                or      edi, eax
                mov     ebp, [esi+4]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Fh
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+5C4DD124h]
                or      edi, edx
                mov     ebp, [esi+8]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Dh
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp+5C4DD124h]
                or      edi, ecx
                mov     ebp, [esi+0Ch]
                xor     edi, eax
                add     ebx, edi
                rol     ebx, 0Bh
                mov     [esp+10h], eax
                mov     [esp+18h], ecx
                mov     eax, [esp]
                mov     ecx, [esp+8]
                mov     [esp+1Ch], edx
                mov     edx, [esp+4]
                mov     [esp+14h], edx
                mov     edx, [esp+0Ch]
                mov     edi, ecx
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+6ED9EBA1h]
                or      edi, ebx
                mov     ebp, [esi+28h]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Bh
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp+6ED9EBA1h]
                or      edi, eax
                mov     ebp, [esi+38h]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Dh
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+6ED9EBA1h]
                or      edi, edx
                mov     ebp, [esi+10h]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 6
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp+6ED9EBA1h]
                or      edi, ecx
                mov     ebp, [esi+24h]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 7
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+6ED9EBA1h]
                or      edi, ebx
                mov     ebp, [esi+3Ch]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Eh
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp+6ED9EBA1h]
                or      edi, eax
                mov     ebp, [esi+20h]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+6ED9EBA1h]
                or      edi, edx
                mov     ebp, [esi+4]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Dh
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp+6ED9EBA1h]
                or      edi, ecx
                mov     ebp, [esi+8]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Fh
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+6ED9EBA1h]
                or      edi, ebx
                mov     ebp, [esi+1Ch]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Eh
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp+6ED9EBA1h]
                or      edi, eax
                mov     ebp, [esi]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 8
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+6ED9EBA1h]
                or      edi, edx
                mov     ebp, [esi+18h]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Dh
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp+6ED9EBA1h]
                or      edi, ecx
                mov     ebp, [esi+34h]
                xor     edi, eax
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 6
                xor     edi, 0FFFFFFFFh
                lea     eax, [eax+ebp+6ED9EBA1h]
                or      edi, ebx
                mov     ebp, [esi+2Ch]
                xor     edi, edx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 5
                xor     edi, 0FFFFFFFFh
                lea     edx, [edx+ebp+6ED9EBA1h]
                or      edi, eax
                mov     ebp, [esi+14h]
                xor     edi, ecx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Ch
                xor     edi, 0FFFFFFFFh
                lea     ecx, [ecx+ebp+6ED9EBA1h]
                or      edi, edx
                mov     ebp, [esi+30h]
                xor     edi, ebx
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 7
                xor     edi, 0FFFFFFFFh
                lea     ebx, [ebx+ebp+6ED9EBA1h]
                or      edi, ecx
                mov     ebp, [esi+3Ch]
                xor     edi, eax
                add     ebx, edi
                rol     ebx, 5
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     [esp+8], ecx
                mov     ecx, [esp+18h]
                mov     [esp+0Ch], edx
                mov     edx, [esp+1Ch]
                mov     edi, ecx
                xor     edi, edx
                lea     eax, [eax+ebp+6D703EF3h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+14h]
                rol     eax, 9
                and     ebp, eax
                lea     edx, [edx+edi+6D703EF3h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+4]
                rol     edx, 7
                xor     edi, ebx
                lea     ecx, [ecx+ebp+6D703EF3h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+0Ch]
                rol     ecx, 0Fh
                and     ebp, ecx
                lea     ebx, [ebx+edi+6D703EF3h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+1Ch]
                rol     ebx, 0Bh
                xor     edi, edx
                lea     eax, [eax+ebp+6D703EF3h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+38h]
                rol     eax, 8
                and     ebp, eax
                lea     edx, [edx+edi+6D703EF3h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+18h]
                rol     edx, 6
                xor     edi, ebx
                lea     ecx, [ecx+ebp+6D703EF3h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+24h]
                rol     ecx, 6
                and     ebp, ecx
                lea     ebx, [ebx+edi+6D703EF3h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+2Ch]
                rol     ebx, 0Eh
                xor     edi, edx
                lea     eax, [eax+ebp+6D703EF3h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi+20h]
                rol     eax, 0Ch
                and     ebp, eax
                lea     edx, [edx+edi+6D703EF3h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+30h]
                rol     edx, 0Dh
                xor     edi, ebx
                lea     ecx, [ecx+ebp+6D703EF3h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+8]
                rol     ecx, 5
                and     ebp, ecx
                lea     ebx, [ebx+edi+6D703EF3h]
                xor     ebp, eax
                mov     edi, ecx
                add     ebx, ebp
                mov     ebp, [esi+28h]
                rol     ebx, 0Eh
                xor     edi, edx
                lea     eax, [eax+ebp+6D703EF3h]
                and     edi, ebx
                mov     ebp, ebx
                xor     edi, edx
                xor     ebp, ecx
                add     eax, edi
                mov     edi, [esi]
                rol     eax, 0Dh
                and     ebp, eax
                lea     edx, [edx+edi+6D703EF3h]
                xor     ebp, ecx
                mov     edi, eax
                add     edx, ebp
                mov     ebp, [esi+10h]
                rol     edx, 0Dh
                xor     edi, ebx
                lea     ecx, [ecx+ebp+6D703EF3h]
                and     edi, edx
                mov     ebp, edx
                xor     edi, ebx
                xor     ebp, eax
                add     ecx, edi
                mov     edi, [esi+34h]
                rol     ecx, 7
                and     ebp, ecx
                lea     ebx, [ebx+edi+6D703EF3h]
                xor     ebp, eax
                add     ebx, ebp
                mov     ebp, [esi+4]
                rol     ebx, 5
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     [esp+1Ch], edx
                mov     edx, [esp+8]
                mov     [esp+18h], edx
                mov     edx, [esp+0Ch]
                mov     edi, ecx
                xor     edi, ebx
                lea     eax, [eax+ebp-70E44324h]
                and     edi, edx
                mov     ebp, [esi+24h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Bh
                xor     edi, eax
                lea     edx, [edx+ebp-70E44324h]
                and     edi, ecx
                mov     ebp, [esi+2Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Ch
                xor     edi, edx
                lea     ecx, [ecx+ebp-70E44324h]
                and     edi, ebx
                mov     ebp, [esi+28h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Eh
                xor     edi, ecx
                lea     ebx, [ebx+ebp-70E44324h]
                and     edi, eax
                mov     ebp, [esi]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Fh
                xor     edi, ebx
                lea     eax, [eax+ebp-70E44324h]
                and     edi, edx
                mov     ebp, [esi+20h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Eh
                xor     edi, eax
                lea     edx, [edx+ebp-70E44324h]
                and     edi, ecx
                mov     ebp, [esi+30h]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Fh
                xor     edi, edx
                lea     ecx, [ecx+ebp-70E44324h]
                and     edi, ebx
                mov     ebp, [esi+10h]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 9
                xor     edi, ecx
                lea     ebx, [ebx+ebp-70E44324h]
                and     edi, eax
                mov     ebp, [esi+34h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 8
                xor     edi, ebx
                lea     eax, [eax+ebp-70E44324h]
                and     edi, edx
                mov     ebp, [esi+0Ch]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 9
                xor     edi, eax
                lea     edx, [edx+ebp-70E44324h]
                and     edi, ecx
                mov     ebp, [esi+1Ch]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Eh
                xor     edi, edx
                lea     ecx, [ecx+ebp-70E44324h]
                and     edi, ebx
                mov     ebp, [esi+3Ch]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 5
                xor     edi, ecx
                lea     ebx, [ebx+ebp-70E44324h]
                and     edi, eax
                mov     ebp, [esi+38h]
                xor     edi, edx
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 6
                xor     edi, ebx
                lea     eax, [eax+ebp-70E44324h]
                and     edi, edx
                mov     ebp, [esi+14h]
                xor     edi, ecx
                add     eax, edi
                mov     edi, ebx
                rol     eax, 8
                xor     edi, eax
                lea     edx, [edx+ebp-70E44324h]
                and     edi, ecx
                mov     ebp, [esi+18h]
                xor     edi, ebx
                add     edx, edi
                mov     edi, eax
                rol     edx, 6
                xor     edi, edx
                lea     ecx, [ecx+ebp-70E44324h]
                and     edi, ebx
                mov     ebp, [esi+8]
                xor     edi, eax
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 5
                xor     edi, ecx
                lea     ebx, [ebx+ebp-70E44324h]
                and     edi, eax
                mov     ebp, [esi+20h]
                xor     edi, edx
                add     ebx, edi
                rol     ebx, 0Ch
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     [esp+8], ecx
                mov     ecx, [esp+18h]
                mov     edi, ecx
                mov     [esp+0Ch], edx
                mov     edx, [esp+1Ch]
                xor     edi, edx
                mov     ebp, [esi+20h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Fh
                xor     edi, ecx
                mov     ebp, [esi+18h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, eax
                rol     edx, 5
                xor     edi, ebx
                mov     ebp, [esi+10h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 8
                xor     edi, eax
                mov     ebp, [esi+4]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Bh
                xor     edi, edx
                mov     ebp, [esi+0Ch]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Eh
                xor     edi, ecx
                mov     ebp, [esi+2Ch]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Eh
                xor     edi, ebx
                mov     ebp, [esi+3Ch]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 6
                xor     edi, eax
                mov     ebp, [esi]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 0Eh
                xor     edi, edx
                mov     ebp, [esi+14h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ebx
                rol     eax, 6
                xor     edi, ecx
                mov     ebp, [esi+30h]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                xor     edi, ebx
                mov     ebp, [esi+8]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Ch
                xor     edi, eax
                mov     ebp, [esi+34h]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 9
                xor     edi, edx
                mov     ebp, [esi+24h]
                xor     edi, ebx
                add     eax, ebp
                add     eax, edi
                mov     edi, ebx
                rol     eax, 0Ch
                xor     edi, ecx
                mov     ebp, [esi+1Ch]
                xor     edi, eax
                add     edx, ebp
                add     edx, edi
                mov     edi, eax
                rol     edx, 5
                xor     edi, ebx
                mov     ebp, [esi+28h]
                xor     edi, edx
                add     ecx, ebp
                add     ecx, edi
                mov     edi, edx
                rol     ecx, 0Fh
                xor     edi, eax
                mov     ebp, [esi+38h]
                xor     edi, ecx
                add     ebx, ebp
                add     ebx, edi
                mov     edi, ecx
                rol     ebx, 8
                mov     edi, [esp+20h]
                add     [edi+0Ch], edx
                add     [edi+10h], eax
                add     [edi+14h], ebx
                mov     eax, [esp]
                mov     ebx, [esp+4]
                add     [edi+18h], ecx
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                add     [edi], eax
                add     esp, 24h
                add     [edi+4], ebx
                add     [edi+8], ecx
                add     [edi+1Ch], edx


                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;
{$ENDIF}

{$IFDEF THash_RipeMD320_asm}
procedure THash_RipeMD320.DoTransform(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THash_RipeMD320.FDigest
                mov     esi, edx
                push    ebp
                mov     eax, [edi]
                mov     ebx, [edi+4]
                push    edi
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                add     esp, 0FFFFFFD8h
                mov     ebp, [edi+10h]
                mov     edi, edx
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Bh
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+4]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 0Eh
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+8]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Fh
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+0Ch]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Ch
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+10h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 5
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+14h]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 8
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+18h]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 7
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+1Ch]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+20h]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+24h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 0Dh
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+28h]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+2Ch]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+30h]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 6
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+34h]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 7
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+38h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 9
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+3Ch]
                rol     ecx, 0Ah
                add     eax, edi
                rol     eax, 8
                add     eax, ebp
                mov     edi, [esp+28h]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [edi+14h]
                mov     ebx, [edi+18h]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     ecx, [edi+1Ch]
                mov     edx, [edi+20h]
                mov     [esp+10h], ebp
                mov     ebp, [edi+24h]
                mov     edi, edx
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+14h]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+50A28BE6h]
                mov     edi, ecx
                rol     eax, 8
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+38h]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+50A28BE6h]
                mov     edi, ebx
                rol     ebp, 9
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+1Ch]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi+50A28BE6h]
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+50A28BE6h]
                mov     edi, ebp
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+24h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+50A28BE6h]
                mov     edi, edx
                rol     ebx, 0Dh
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+8]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+50A28BE6h]
                mov     edi, ecx
                rol     eax, 0Fh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+2Ch]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+50A28BE6h]
                mov     edi, ebx
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+10h]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi+50A28BE6h]
                mov     edi, eax
                rol     edx, 5
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+34h]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+50A28BE6h]
                mov     edi, ebp
                rol     ecx, 7
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+18h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+50A28BE6h]
                mov     edi, edx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+3Ch]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+50A28BE6h]
                mov     edi, ecx
                rol     eax, 8
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+20h]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+50A28BE6h]
                mov     edi, ebx
                rol     ebp, 0Bh
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+4]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi+50A28BE6h]
                mov     edi, eax
                rol     edx, 0Eh
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+28h]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+50A28BE6h]
                mov     edi, ebp
                rol     ecx, 0Eh
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+0Ch]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+50A28BE6h]
                mov     edi, edx
                rol     ebx, 0Ch
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+30h]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+50A28BE6h]
                rol     eax, 6
                add     eax, ebp
                mov     [esp+18h], ebx
                mov     [esp+1Ch], ecx
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     [esp+20h], edx
                mov     [esp+24h], ebp
                mov     edx, [esp+0Ch]
                mov     ebp, [esp]
                mov     [esp+14h], ebp
                mov     ebp, [esp+10h]
                mov     edi, ecx
                xor     edi, ebx
                add     ebp, [esi+1Ch]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, ebx
                rol     ebp, 7
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+10h]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+5A827999h]
                mov     edi, eax
                rol     edx, 6
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+34h]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, ebp
                rol     ecx, 8
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+4]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 0Dh
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi+28h]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 0Bh
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+18h]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, ebx
                rol     ebp, 9
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+3Ch]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+5A827999h]
                mov     edi, eax
                rol     edx, 7
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+0Ch]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, ebp
                rol     ecx, 0Fh
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+30h]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 0Ch
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+24h]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, ebx
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+14h]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+5A827999h]
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+8]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, ebp
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+38h]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, edx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi+2Ch]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ecx
                rol     eax, 0Dh
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+20h]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5A827999h]
                rol     ebp, 0Ch
                add     ebp, edx
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [esp+14h]
                mov     ebx, [esp+18h]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+20h]
                mov     [esp+10h], ebp
                mov     ebp, [esp+24h]
                mov     edi, ebx
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+18h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5C4DD124h]
                mov     edi, eax
                rol     ebp, 9
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+2Ch]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi+5C4DD124h]
                mov     edi, ebp
                rol     edx, 0Dh
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+0Ch]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5C4DD124h]
                mov     edi, edx
                rol     ecx, 0Fh
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+1Ch]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5C4DD124h]
                mov     edi, ecx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5C4DD124h]
                mov     edi, ebx
                rol     eax, 0Ch
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+34h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5C4DD124h]
                mov     edi, eax
                rol     ebp, 8
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+14h]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi+5C4DD124h]
                mov     edi, ebp
                rol     edx, 9
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+28h]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5C4DD124h]
                mov     edi, edx
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+38h]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5C4DD124h]
                mov     edi, ecx
                rol     ebx, 7
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+3Ch]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5C4DD124h]
                mov     edi, ebx
                rol     eax, 7
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+20h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5C4DD124h]
                mov     edi, eax
                rol     ebp, 0Ch
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+30h]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi+5C4DD124h]
                mov     edi, ebp
                rol     edx, 7
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+10h]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+5C4DD124h]
                mov     edi, edx
                rol     ecx, 6
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+24h]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+5C4DD124h]
                mov     edi, ecx
                rol     ebx, 0Fh
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+4]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+5C4DD124h]
                mov     edi, ebx
                rol     eax, 0Dh
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+8]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+5C4DD124h]
                rol     ebp, 0Bh
                add     ebp, edx
                mov     [esp+14h], eax
                mov     [esp+1Ch], ecx
                mov     eax, [esp]
                mov     ecx, [esp+8]
                mov     [esp+20h], edx
                mov     [esp+24h], ebp
                mov     edx, [esp+0Ch]
                mov     ebp, [esp+4]
                mov     [esp+18h], ebp
                mov     ebp, [esp+10h]
                mov     edi, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi+0Ch]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edx, 0Bh
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ecx, [esi+28h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     ecx, 0Dh
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     ebx, [esi+38h]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     ebx, 6
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     eax, [esi+10h]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     eax, 7
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     ebp, [esi+24h]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     ebp, 0Eh
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi+3Ch]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edx, 9
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ecx, [esi+20h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     ecx, 0Dh
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     ebx, [esi+4]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     ebx, 0Fh
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     eax, [esi+8]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     ebp, [esi+1Ch]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     ebp, 8
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edx, 0Dh
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ecx, [esi+18h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     ecx, 6
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     ebx, [esi+34h]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     ebx, 5
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     eax, [esi+2Ch]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     eax, 0Ch
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     ebp, [esi+14h]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     ebp, 7
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi+30h]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6ED9EBA1h]
                rol     edx, 5
                add     edx, ecx
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [esp+14h]
                mov     ebx, [esp+18h]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+20h]
                mov     [esp+10h], ebp
                mov     ebp, [esp+24h]
                mov     edi, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi+3Ch]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6D703EF3h]
                mov     edi, ebp
                rol     edx, 9
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ecx, [esi+14h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6D703EF3h]
                mov     edi, edx
                rol     ecx, 7
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     ebx, [esi+4]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6D703EF3h]
                mov     edi, ecx
                rol     ebx, 0Fh
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     eax, [esi+0Ch]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6D703EF3h]
                mov     edi, ebx
                rol     eax, 0Bh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     ebp, [esi+1Ch]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6D703EF3h]
                mov     edi, eax
                rol     ebp, 8
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi+38h]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6D703EF3h]
                mov     edi, ebp
                rol     edx, 6
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ecx, [esi+18h]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6D703EF3h]
                mov     edi, edx
                rol     ecx, 6
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     ebx, [esi+24h]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6D703EF3h]
                mov     edi, ecx
                rol     ebx, 0Eh
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     eax, [esi+2Ch]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6D703EF3h]
                mov     edi, ebx
                rol     eax, 0Ch
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     ebp, [esi+20h]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6D703EF3h]
                mov     edi, eax
                rol     ebp, 0Dh
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi+30h]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6D703EF3h]
                mov     edi, ebp
                rol     edx, 5
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ecx, [esi+8]
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+6D703EF3h]
                mov     edi, edx
                rol     ecx, 0Eh
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     ebx, [esi+28h]
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+6D703EF3h]
                mov     edi, ecx
                rol     ebx, 0Dh
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     eax, [esi]
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+6D703EF3h]
                mov     edi, ebx
                rol     eax, 0Dh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     ebp, [esi+10h]
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+6D703EF3h]
                mov     edi, eax
                rol     ebp, 7
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     edx, [esi+34h]
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+6D703EF3h]
                rol     edx, 5
                add     edx, ecx
                mov     [esp+14h], eax
                mov     [esp+18h], ebx
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     [esp+20h], edx
                mov     [esp+24h], ebp
                mov     edx, [esp+0Ch]
                mov     ebp, [esp+8]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+10h]
                mov     edi, ebp
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+4]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-70E44324h]
                mov     edi, edx
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+24h]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-70E44324h]
                mov     edi, ecx
                rol     ebx, 0Ch
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+2Ch]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-70E44324h]
                mov     edi, ebx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+28h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-70E44324h]
                mov     edi, eax
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi-70E44324h]
                mov     edi, ebp
                rol     edx, 0Eh
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+20h]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-70E44324h]
                mov     edi, edx
                rol     ecx, 0Fh
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+30h]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-70E44324h]
                mov     edi, ecx
                rol     ebx, 9
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+10h]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-70E44324h]
                mov     edi, ebx
                rol     eax, 8
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+34h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-70E44324h]
                mov     edi, eax
                rol     ebp, 9
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+0Ch]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi-70E44324h]
                mov     edi, ebp
                rol     edx, 0Eh
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+1Ch]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-70E44324h]
                mov     edi, edx
                rol     ecx, 5
                add     ecx, ebx
                xor     edi, ecx
                and     edi, ebp
                add     ebx, [esi+3Ch]
                xor     edi, edx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-70E44324h]
                mov     edi, ecx
                rol     ebx, 6
                add     ebx, eax
                xor     edi, ebx
                and     edi, edx
                add     eax, [esi+38h]
                xor     edi, ecx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-70E44324h]
                mov     edi, ebx
                rol     eax, 8
                add     eax, ebp
                xor     edi, eax
                and     edi, ecx
                add     ebp, [esi+14h]
                xor     edi, ebx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-70E44324h]
                mov     edi, eax
                rol     ebp, 6
                add     ebp, edx
                xor     edi, ebp
                and     edi, ebx
                add     edx, [esi+18h]
                xor     edi, eax
                rol     eax, 0Ah
                lea     edx, [edx+edi-70E44324h]
                mov     edi, ebp
                rol     edx, 5
                add     edx, ecx
                xor     edi, edx
                and     edi, eax
                add     ecx, [esi+8]
                xor     edi, ebp
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-70E44324h]
                rol     ecx, 0Ch
                add     ecx, ebx
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [esp+14h]
                mov     ebx, [esp+18h]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+20h]
                mov     [esp+10h], ebp
                mov     ebp, [esp+24h]
                mov     edi, eax
                xor     edi, ebp
                add     ecx, [esi+20h]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+7A6D76E9h]
                mov     edi, ebp
                rol     ecx, 0Fh
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+18h]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+7A6D76E9h]
                mov     edi, edx
                rol     ebx, 5
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi+10h]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+7A6D76E9h]
                mov     edi, ecx
                rol     eax, 8
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+4]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+7A6D76E9h]
                mov     edi, ebx
                rol     ebp, 0Bh
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+0Ch]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+7A6D76E9h]
                mov     edi, eax
                rol     edx, 0Eh
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+2Ch]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+7A6D76E9h]
                mov     edi, ebp
                rol     ecx, 0Eh
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+3Ch]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+7A6D76E9h]
                mov     edi, edx
                rol     ebx, 6
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+7A6D76E9h]
                mov     edi, ecx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+14h]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+7A6D76E9h]
                mov     edi, ebx
                rol     ebp, 6
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+30h]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+7A6D76E9h]
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+8]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+7A6D76E9h]
                mov     edi, ebp
                rol     ecx, 0Ch
                add     ecx, ebx
                xor     edi, edx
                add     ebx, [esi+34h]
                and     edi, ecx
                xor     edi, ebp
                rol     edx, 0Ah
                lea     ebx, [ebx+edi+7A6D76E9h]
                mov     edi, edx
                rol     ebx, 9
                add     ebx, eax
                xor     edi, ecx
                add     eax, [esi+24h]
                and     edi, ebx
                xor     edi, edx
                rol     ecx, 0Ah
                lea     eax, [eax+edi+7A6D76E9h]
                mov     edi, ecx
                rol     eax, 0Ch
                add     eax, ebp
                xor     edi, ebx
                add     ebp, [esi+1Ch]
                and     edi, eax
                xor     edi, ecx
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi+7A6D76E9h]
                mov     edi, ebx
                rol     ebp, 5
                add     ebp, edx
                xor     edi, eax
                add     edx, [esi+28h]
                and     edi, ebp
                xor     edi, ebx
                rol     eax, 0Ah
                lea     edx, [edx+edi+7A6D76E9h]
                mov     edi, eax
                rol     edx, 0Fh
                add     edx, ecx
                xor     edi, ebp
                add     ecx, [esi+38h]
                and     edi, edx
                xor     edi, eax
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi+7A6D76E9h]
                rol     ecx, 8
                add     ecx, ebx
                mov     [esp+14h], eax
                mov     [esp+18h], ebx
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     [esp+1Ch], ecx
                mov     [esp+24h], ebp
                mov     ecx, [esp+8]
                mov     ebp, [esp+0Ch]
                mov     [esp+20h], ebp
                mov     ebp, [esp+10h]
                mov     edi, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+10h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-56AC02B2h]
                mov     edi, edx
                rol     ebx, 9
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-56AC02B2h]
                mov     edi, ecx
                rol     eax, 0Fh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+14h]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-56AC02B2h]
                mov     edi, ebx
                rol     ebp, 5
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+24h]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi-56AC02B2h]
                mov     edi, eax
                rol     edx, 0Bh
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+1Ch]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-56AC02B2h]
                mov     edi, ebp
                rol     ecx, 6
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+30h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-56AC02B2h]
                mov     edi, edx
                rol     ebx, 8
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+8]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-56AC02B2h]
                mov     edi, ecx
                rol     eax, 0Dh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+28h]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-56AC02B2h]
                mov     edi, ebx
                rol     ebp, 0Ch
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+38h]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi-56AC02B2h]
                mov     edi, eax
                rol     edx, 5
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+4]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-56AC02B2h]
                mov     edi, ebp
                rol     ecx, 0Ch
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+0Ch]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-56AC02B2h]
                mov     edi, edx
                rol     ebx, 0Dh
                add     ebx, eax
                xor     edi, 0FFFFFFFFh
                or      edi, ecx
                add     eax, [esi+20h]
                xor     edi, ebx
                rol     ecx, 0Ah
                lea     eax, [eax+edi-56AC02B2h]
                mov     edi, ecx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, 0FFFFFFFFh
                or      edi, ebx
                add     ebp, [esi+2Ch]
                xor     edi, eax
                rol     ebx, 0Ah
                lea     ebp, [ebp+edi-56AC02B2h]
                mov     edi, ebx
                rol     ebp, 0Bh
                add     ebp, edx
                xor     edi, 0FFFFFFFFh
                or      edi, eax
                add     edx, [esi+18h]
                xor     edi, ebp
                rol     eax, 0Ah
                lea     edx, [edx+edi-56AC02B2h]
                mov     edi, eax
                rol     edx, 8
                add     edx, ecx
                xor     edi, 0FFFFFFFFh
                or      edi, ebp
                add     ecx, [esi+3Ch]
                xor     edi, edx
                rol     ebp, 0Ah
                lea     ecx, [ecx+edi-56AC02B2h]
                mov     edi, ebp
                rol     ecx, 5
                add     ecx, ebx
                xor     edi, 0FFFFFFFFh
                or      edi, edx
                add     ebx, [esi+34h]
                xor     edi, ecx
                rol     edx, 0Ah
                lea     ebx, [ebx+edi-56AC02B2h]
                rol     ebx, 6
                add     ebx, eax
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [esp+14h]
                mov     ebx, [esp+18h]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+20h]
                mov     [esp+10h], ebp
                mov     ebp, [esp+24h]
                mov     edi, ebp
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+30h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 8
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+3Ch]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 5
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+28h]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 0Ch
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+10h]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 9
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+4]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Ch
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+14h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 5
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+20h]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 0Eh
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi+1Ch]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 6
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+18h]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 8
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+8]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Dh
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+34h]
                rol     edx, 0Ah
                add     ebx, edi
                mov     edi, edx
                rol     ebx, 6
                add     ebx, eax
                xor     edi, ecx
                xor     edi, ebx
                add     eax, [esi+38h]
                rol     ecx, 0Ah
                add     eax, edi
                mov     edi, ecx
                rol     eax, 5
                add     eax, ebp
                xor     edi, ebx
                xor     edi, eax
                add     ebp, [esi]
                rol     ebx, 0Ah
                add     ebp, edi
                mov     edi, ebx
                rol     ebp, 0Fh
                add     ebp, edx
                xor     edi, eax
                xor     edi, ebp
                add     edx, [esi+0Ch]
                rol     eax, 0Ah
                add     edx, edi
                mov     edi, eax
                rol     edx, 0Dh
                add     edx, ecx
                xor     edi, ebp
                xor     edi, edx
                add     ecx, [esi+24h]
                rol     ebp, 0Ah
                add     ecx, edi
                mov     edi, ebp
                rol     ecx, 0Bh
                add     ecx, ebx
                xor     edi, edx
                xor     edi, ecx
                add     ebx, [esi+2Ch]
                rol     edx, 0Ah
                add     ebx, edi
                rol     ebx, 0Bh
                add     ebx, eax
                mov     edi, [esp+28h]
                add     [edi+10h], ebp
                add     [edi+14h], eax
                add     [edi+18h], ebx
                mov     eax, [esp]
                mov     ebx, [esp+4]
                add     [edi+1Ch], ecx
                mov     ebp, [esp+10h]
                add     [edi+20h], edx
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                add     [edi], eax
                add     [edi+4], ebx
                add     esp, 2Ch
                add     [edi+8], ecx
                add     [edi+0Ch], edx
                add     [edi+24h], ebp
                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;
{$ENDIF}

{$IFDEF THash_SHA_asm}
procedure SHABuffer(W,S: PLongArray; Rotate: Boolean);
var
  I: Integer;
  T: LongWord;
begin
  SwapLongBuffer(S[0], W[0], 16);
  if Rotate then
    for I := 16 to 79 do
    begin
      T := W[I - 3] xor W[I - 8] xor W[I - 14] xor W[I - 16];
      W[I] := T shl 1 or T shr 31;
    end
  else
    for I := 16 to 79 do
    begin
      T := W[I - 3] xor W[I - 8] xor W[I - 14] xor W[I - 16];
      W[I] := T;
    end
end;

procedure THash_SHA.DoTransform(Buffer: PLongArray);
var
  W: array[0..79] of LongWord;
begin
  SHABuffer(@W, Buffer, ClassType <> THash_SHA);
  asm
                push    ebx
                mov     eax, Self
                push    esi
                push    edi
                lea     edi, [eax].THash_SHA.FDigest
                lea     esi, W
                push    ebp

                sub     esp, 8
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     ecx, [edi+8]
                mov     [esp], edi
                mov     edx, [edi+0Ch]
                mov     ebp, [edi+10h]
                mov     [esp+4], esi
                mov     edi, ecx
                xor     edi, edx
                and     edi, ebx
                add     ebp, [esi]
                xor     edi, edx
                ror     ebx, 2
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                and     edi, eax
                add     edx, [esi+4]
                xor     edi, ecx
                ror     eax, 2
                lea     edx, [edx+edi+5A827999h]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                and     edi, ebp
                add     ecx, [esi+8]
                xor     edi, ebx
                ror     ebp, 2
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                and     edi, edx
                add     ebx, [esi+0Ch]
                xor     edi, eax
                ror     edx, 2
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                and     edi, ecx
                add     eax, [esi+10h]
                xor     edi, ebp
                ror     ecx, 2
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                and     edi, ebx
                add     ebp, [esi+14h]
                xor     edi, edx
                ror     ebx, 2
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                and     edi, eax
                add     edx, [esi+18h]
                xor     edi, ecx
                ror     eax, 2
                lea     edx, [edx+edi+5A827999h]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                and     edi, ebp
                add     ecx, [esi+1Ch]
                xor     edi, ebx
                ror     ebp, 2
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                and     edi, edx
                add     ebx, [esi+20h]
                xor     edi, eax
                ror     edx, 2
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                and     edi, ecx
                add     eax, [esi+24h]
                xor     edi, ebp
                ror     ecx, 2
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                and     edi, ebx
                add     ebp, [esi+28h]
                xor     edi, edx
                ror     ebx, 2
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                and     edi, eax
                add     edx, [esi+2Ch]
                xor     edi, ecx
                ror     eax, 2
                lea     edx, [edx+edi+5A827999h]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                and     edi, ebp
                add     ecx, [esi+30h]
                xor     edi, ebx
                ror     ebp, 2
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                and     edi, edx
                add     ebx, [esi+34h]
                xor     edi, eax
                ror     edx, 2
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                and     edi, ecx
                add     eax, [esi+38h]
                xor     edi, ebp
                ror     ecx, 2
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                and     edi, ebx
                add     ebp, [esi+3Ch]
                xor     edi, edx
                ror     ebx, 2
                lea     ebp, [ebp+edi+5A827999h]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                and     edi, eax
                add     edx, [esi+40h]
                xor     edi, ecx
                ror     eax, 2
                lea     edx, [edx+edi+5A827999h]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                and     edi, ebp
                add     ecx, [esi+44h]
                xor     edi, ebx
                ror     ebp, 2
                lea     ecx, [ecx+edi+5A827999h]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                and     edi, edx
                add     ebx, [esi+48h]
                xor     edi, eax
                ror     edx, 2
                lea     ebx, [ebx+edi+5A827999h]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                and     edi, ecx
                add     eax, [esi+4Ch]
                xor     edi, ebp
                ror     ecx, 2
                lea     eax, [eax+edi+5A827999h]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                xor     edi, ebx
                add     ebp, edi
                mov     edi, [esi+50h]
                ror     ebx, 2
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                xor     edi, eax
                add     edx, edi
                mov     edi, [esi+54h]
                ror     eax, 2
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                xor     edi, ebp
                add     ecx, edi
                mov     edi, [esi+58h]
                ror     ebp, 2
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                xor     edi, edx
                add     ebx, edi
                mov     edi, [esi+5Ch]
                ror     edx, 2
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                xor     edi, ecx
                add     eax, edi
                mov     edi, [esi+60h]
                ror     ecx, 2
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                xor     edi, ebx
                add     ebp, edi
                mov     edi, [esi+64h]
                ror     ebx, 2
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                xor     edi, eax
                add     edx, edi
                mov     edi, [esi+68h]
                ror     eax, 2
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                xor     edi, ebp
                add     ecx, edi
                mov     edi, [esi+6Ch]
                ror     ebp, 2
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                xor     edi, edx
                add     ebx, edi
                mov     edi, [esi+70h]
                ror     edx, 2
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                xor     edi, ecx
                add     eax, edi
                mov     edi, [esi+74h]
                ror     ecx, 2
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                xor     edi, ebx
                add     ebp, edi
                mov     edi, [esi+78h]
                ror     ebx, 2
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                xor     edi, eax
                add     edx, edi
                mov     edi, [esi+7Ch]
                ror     eax, 2
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                xor     edi, ebp
                add     ecx, edi
                mov     edi, [esi+80h]
                ror     ebp, 2
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                xor     edi, edx
                add     ebx, edi
                mov     edi, [esi+84h]
                ror     edx, 2
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                xor     edi, ecx
                add     eax, edi
                mov     edi, [esi+88h]
                ror     ecx, 2
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                xor     edi, ebx
                add     ebp, edi
                mov     edi, [esi+8Ch]
                ror     ebx, 2
                lea     ebp, [ebp+edi+6ED9EBA1h]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                xor     edi, eax
                add     edx, edi
                mov     edi, [esi+90h]
                ror     eax, 2
                lea     edx, [edx+edi+6ED9EBA1h]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                xor     edi, ebp
                add     ecx, edi
                mov     edi, [esi+94h]
                ror     ebp, 2
                lea     ecx, [ecx+edi+6ED9EBA1h]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                xor     edi, edx
                add     ebx, edi
                mov     edi, [esi+98h]
                ror     edx, 2
                lea     ebx, [ebx+edi+6ED9EBA1h]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                xor     edi, ecx
                add     eax, edi
                mov     edi, [esi+9Ch]
                ror     ecx, 2
                lea     eax, [eax+edi+6ED9EBA1h]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                mov     esi, ecx
                mov     edi, ecx
                or      esi, edx
                and     edi, edx
                and     esi, ebx
                or      esi, edi
                mov     edi, eax
                add     ebp, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ebp, edi
                mov     edi, [esi+0A0h]
                ror     ebx, 2
                lea     ebp, [ebp+edi-70E44324h]
                mov     esi, ebx
                mov     edi, ebx
                or      esi, ecx
                and     edi, ecx
                and     esi, eax
                or      esi, edi
                mov     edi, ebp
                add     edx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     edx, edi
                mov     edi, [esi+0A4h]
                ror     eax, 2
                lea     edx, [edx+edi-70E44324h]
                mov     esi, eax
                mov     edi, eax
                or      esi, ebx
                and     edi, ebx
                and     esi, ebp
                or      esi, edi
                mov     edi, edx
                add     ecx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ecx, edi
                mov     edi, [esi+0A8h]
                ror     ebp, 2
                lea     ecx, [ecx+edi-70E44324h]
                mov     esi, ebp
                mov     edi, ebp
                or      esi, eax
                and     edi, eax
                and     esi, edx
                or      esi, edi
                mov     edi, ecx
                add     ebx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ebx, edi
                mov     edi, [esi+0ACh]
                ror     edx, 2
                lea     ebx, [ebx+edi-70E44324h]
                mov     esi, edx
                mov     edi, edx
                or      esi, ebp
                and     edi, ebp
                and     esi, ecx
                or      esi, edi
                mov     edi, ebx
                add     eax, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     eax, edi
                mov     edi, [esi+0B0h]
                ror     ecx, 2
                lea     eax, [eax+edi-70E44324h]
                mov     esi, ecx
                mov     edi, ecx
                or      esi, edx
                and     edi, edx
                and     esi, ebx
                or      esi, edi
                mov     edi, eax
                add     ebp, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ebp, edi
                mov     edi, [esi+0B4h]
                ror     ebx, 2
                lea     ebp, [ebp+edi-70E44324h]
                mov     esi, ebx
                mov     edi, ebx
                or      esi, ecx
                and     edi, ecx
                and     esi, eax
                or      esi, edi
                mov     edi, ebp
                add     edx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     edx, edi
                mov     edi, [esi+0B8h]
                ror     eax, 2
                lea     edx, [edx+edi-70E44324h]
                mov     esi, eax
                mov     edi, eax
                or      esi, ebx
                and     edi, ebx
                and     esi, ebp
                or      esi, edi
                mov     edi, edx
                add     ecx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ecx, edi
                mov     edi, [esi+0BCh]
                ror     ebp, 2
                lea     ecx, [ecx+edi-70E44324h]
                mov     esi, ebp
                mov     edi, ebp
                or      esi, eax
                and     edi, eax
                and     esi, edx
                or      esi, edi
                mov     edi, ecx
                add     ebx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ebx, edi
                mov     edi, [esi+0C0h]
                ror     edx, 2
                lea     ebx, [ebx+edi-70E44324h]
                mov     esi, edx
                mov     edi, edx
                or      esi, ebp
                and     edi, ebp
                and     esi, ecx
                or      esi, edi
                mov     edi, ebx
                add     eax, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     eax, edi
                mov     edi, [esi+0C4h]
                ror     ecx, 2
                lea     eax, [eax+edi-70E44324h]
                mov     esi, ecx
                mov     edi, ecx
                or      esi, edx
                and     edi, edx
                and     esi, ebx
                or      esi, edi
                mov     edi, eax
                add     ebp, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ebp, edi
                mov     edi, [esi+0C8h]
                ror     ebx, 2
                lea     ebp, [ebp+edi-70E44324h]
                mov     esi, ebx
                mov     edi, ebx
                or      esi, ecx
                and     edi, ecx
                and     esi, eax
                or      esi, edi
                mov     edi, ebp
                add     edx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     edx, edi
                mov     edi, [esi+0CCh]
                ror     eax, 2
                lea     edx, [edx+edi-70E44324h]
                mov     esi, eax
                mov     edi, eax
                or      esi, ebx
                and     edi, ebx
                and     esi, ebp
                or      esi, edi
                mov     edi, edx
                add     ecx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ecx, edi
                mov     edi, [esi+0D0h]
                ror     ebp, 2
                lea     ecx, [ecx+edi-70E44324h]
                mov     esi, ebp
                mov     edi, ebp
                or      esi, eax
                and     edi, eax
                and     esi, edx
                or      esi, edi
                mov     edi, ecx
                add     ebx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ebx, edi
                mov     edi, [esi+0D4h]
                ror     edx, 2
                lea     ebx, [ebx+edi-70E44324h]
                mov     esi, edx
                mov     edi, edx
                or      esi, ebp
                and     edi, ebp
                and     esi, ecx
                or      esi, edi
                mov     edi, ebx
                add     eax, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     eax, edi
                mov     edi, [esi+0D8h]
                ror     ecx, 2
                lea     eax, [eax+edi-70E44324h]
                mov     esi, ecx
                mov     edi, ecx
                or      esi, edx
                and     edi, edx
                and     esi, ebx
                or      esi, edi
                mov     edi, eax
                add     ebp, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ebp, edi
                mov     edi, [esi+0DCh]
                ror     ebx, 2
                lea     ebp, [ebp+edi-70E44324h]
                mov     esi, ebx
                mov     edi, ebx
                or      esi, ecx
                and     edi, ecx
                and     esi, eax
                or      esi, edi
                mov     edi, ebp
                add     edx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     edx, edi
                mov     edi, [esi+0E0h]
                ror     eax, 2
                lea     edx, [edx+edi-70E44324h]
                mov     esi, eax
                mov     edi, eax
                or      esi, ebx
                and     edi, ebx
                and     esi, ebp
                or      esi, edi
                mov     edi, edx
                add     ecx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ecx, edi
                mov     edi, [esi+0E4h]
                ror     ebp, 2
                lea     ecx, [ecx+edi-70E44324h]
                mov     esi, ebp
                mov     edi, ebp
                or      esi, eax
                and     edi, eax
                and     esi, edx
                or      esi, edi
                mov     edi, ecx
                add     ebx, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     ebx, edi
                mov     edi, [esi+0E8h]
                ror     edx, 2
                lea     ebx, [ebx+edi-70E44324h]
                mov     esi, edx
                mov     edi, edx
                or      esi, ebp
                and     edi, ebp
                and     esi, ecx
                or      esi, edi
                mov     edi, ebx
                add     eax, esi
                mov     esi, [esp+4]
                rol     edi, 5
                add     eax, edi
                mov     edi, [esi+0ECh]
                ror     ecx, 2
                lea     eax, [eax+edi-70E44324h]
                mov     edi, ecx
                xor     edi, edx
                xor     edi, ebx
                add     ebp, edi
                mov     edi, [esi+0F0h]
                ror     ebx, 2
                lea     ebp, [ebp+edi-359D3E2Ah]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                xor     edi, eax
                add     edx, edi
                mov     edi, [esi+0F4h]
                ror     eax, 2
                lea     edx, [edx+edi-359D3E2Ah]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                xor     edi, ebp
                add     ecx, edi
                mov     edi, [esi+0F8h]
                ror     ebp, 2
                lea     ecx, [ecx+edi-359D3E2Ah]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                xor     edi, edx
                add     ebx, edi
                mov     edi, [esi+0FCh]
                ror     edx, 2
                lea     ebx, [ebx+edi-359D3E2Ah]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                xor     edi, ecx
                add     eax, edi
                mov     edi, [esi+100h]
                ror     ecx, 2
                lea     eax, [eax+edi-359D3E2Ah]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                xor     edi, ebx
                add     ebp, edi
                mov     edi, [esi+104h]
                ror     ebx, 2
                lea     ebp, [ebp+edi-359D3E2Ah]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                xor     edi, eax
                add     edx, edi
                mov     edi, [esi+108h]
                ror     eax, 2
                lea     edx, [edx+edi-359D3E2Ah]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                xor     edi, ebp
                add     ecx, edi
                mov     edi, [esi+10Ch]
                ror     ebp, 2
                lea     ecx, [ecx+edi-359D3E2Ah]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                xor     edi, edx
                add     ebx, edi
                mov     edi, [esi+110h]
                ror     edx, 2
                lea     ebx, [ebx+edi-359D3E2Ah]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                xor     edi, ecx
                add     eax, edi
                mov     edi, [esi+114h]
                ror     ecx, 2
                lea     eax, [eax+edi-359D3E2Ah]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                xor     edi, ebx
                add     ebp, edi
                mov     edi, [esi+118h]
                ror     ebx, 2
                lea     ebp, [ebp+edi-359D3E2Ah]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                xor     edi, eax
                add     edx, edi
                mov     edi, [esi+11Ch]
                ror     eax, 2
                lea     edx, [edx+edi-359D3E2Ah]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                xor     edi, ebp
                add     ecx, edi
                mov     edi, [esi+120h]
                ror     ebp, 2
                lea     ecx, [ecx+edi-359D3E2Ah]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                xor     edi, edx
                add     ebx, edi
                mov     edi, [esi+124h]
                ror     edx, 2
                lea     ebx, [ebx+edi-359D3E2Ah]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                xor     edi, ecx
                add     eax, edi
                mov     edi, [esi+128h]
                ror     ecx, 2
                lea     eax, [eax+edi-359D3E2Ah]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, edx
                xor     edi, ecx
                xor     edi, ebx
                add     ebp, edi
                mov     edi, [esi+12Ch]
                ror     ebx, 2
                lea     ebp, [ebp+edi-359D3E2Ah]
                mov     edi, eax
                rol     edi, 5
                add     ebp, edi
                mov     edi, ecx
                xor     edi, ebx
                xor     edi, eax
                add     edx, edi
                mov     edi, [esi+130h]
                ror     eax, 2
                lea     edx, [edx+edi-359D3E2Ah]
                mov     edi, ebp
                rol     edi, 5
                add     edx, edi
                mov     edi, ebx
                xor     edi, eax
                xor     edi, ebp
                add     ecx, edi
                mov     edi, [esi+134h]
                ror     ebp, 2
                lea     ecx, [ecx+edi-359D3E2Ah]
                mov     edi, edx
                rol     edi, 5
                add     ecx, edi
                mov     edi, eax
                xor     edi, ebp
                xor     edi, edx
                add     ebx, edi
                mov     edi, [esi+138h]
                ror     edx, 2
                lea     ebx, [ebx+edi-359D3E2Ah]
                mov     edi, ecx
                rol     edi, 5
                add     ebx, edi
                mov     edi, ebp
                xor     edi, edx
                xor     edi, ecx
                add     eax, edi
                mov     edi, [esi+13Ch]
                ror     ecx, 2
                lea     eax, [eax+edi-359D3E2Ah]
                mov     edi, ebx
                rol     edi, 5
                add     eax, edi
                mov     edi, [esp]
                add     esp, 8
                add     [edi], eax
                mov     eax, [edi+4]
                mov     esi, [edi+8]
                add     ebx, eax
                mov     eax, [edi+0Ch]
                add     ecx, esi
                mov     esi, [edi+10h]
                mov     [edi+4], ebx
                add     edx, eax
                add     ebp, esi
                mov     [edi+8], ecx
                mov     [edi+0Ch], edx
                mov     [edi+10h], ebp

                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
  end;
end;
{$ENDIF}

{$IFDEF THash_SHA256_asm}
procedure SHA256Buffer(S, D: Pointer); assembler;
asm
                push ebx
                push edi
                mov  edi, eax
                push esi
                mov  esi, edx

                mov     eax, [esi]
                mov     ebx, [esi+4]
                bswap   eax
                mov     ecx, [esi+8]
                mov     edx, [esi+0Ch]
                bswap   ebx
                bswap   ecx
                bswap   edx
                mov     [edi], eax
                mov     [edi+4], ebx
                mov     [edi+8], ecx
                mov     [edi+0Ch], edx
                mov     eax, [esi+10h]
                mov     ebx, [esi+14h]
                bswap   eax
                mov     ecx, [esi+18h]
                mov     edx, [esi+1Ch]
                bswap   ebx
                bswap   ecx
                bswap   edx
                mov     [edi+10h], eax
                mov     [edi+14h], ebx
                mov     [edi+18h], ecx
                mov     [edi+1Ch], edx
                mov     eax, [esi+20h]
                mov     ebx, [esi+24h]
                bswap   eax
                mov     ecx, [esi+28h]
                mov     edx, [esi+2Ch]
                bswap   ebx
                bswap   ecx
                bswap   edx
                mov     [edi+20h], eax
                mov     [edi+24h], ebx
                mov     [edi+28h], ecx
                mov     [edi+2Ch], edx
                mov     eax, [esi+30h]
                mov     ebx, [esi+34h]
                bswap   eax
                mov     ecx, [esi+38h]
                mov     edx, [esi+3Ch]
                bswap   ebx
                bswap   ecx
                bswap   edx
                mov     [edi+30h], eax
                mov     [edi+34h], ebx
                mov     [edi+38h], ecx
                mov     [edi+3Ch], edx


                pop  esi
                pop  edi
                pop  ebx
end;

procedure THash_SHA256.DoTransform(Buffer: PLongArray);
var
  W: array[0..63] of LongWord;
begin
  // swap first 16 uint32
  SHA256Buffer(@W, Buffer);
  asm
    push    ebx
    push    esi
    push    edi
    push    ebp

    mov     eax, Self
    lea     edi, [eax].THash_SHA256.FDigest
    lea     esi, W

                mov     eax, esp
                add     esp, 0FFFFFFD4h
                and     esp, 0FFFFFFC0h
                mov     [esp+20h], esi
                mov     [esp+24h], edi
                mov     [esp+28h], eax
                mov     edi, [esi]
                mov     eax, [esi+4]
                mov     edx, [esi+24h]
                mov     ebx, [esi+38h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+4]
                add     edx, eax
                mov     eax, [esi+8]
                mov     [esi+40h], edx
                mov     edx, [esi+28h]
                mov     ebx, [esi+3Ch]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+8]
                add     edx, eax
                mov     eax, [esi+0Ch]
                mov     [esi+44h], edx
                mov     edx, [esi+2Ch]
                mov     ebx, [esi+40h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0Ch]
                add     edx, eax
                mov     eax, [esi+10h]
                mov     [esi+48h], edx
                mov     edx, [esi+30h]
                mov     ebx, [esi+44h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+10h]
                add     edx, eax
                mov     eax, [esi+14h]
                mov     [esi+4Ch], edx
                mov     edx, [esi+34h]
                mov     ebx, [esi+48h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+14h]
                add     edx, eax
                mov     eax, [esi+18h]
                mov     [esi+50h], edx
                mov     edx, [esi+38h]
                mov     ebx, [esi+4Ch]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+18h]
                add     edx, eax
                mov     eax, [esi+1Ch]
                mov     [esi+54h], edx
                mov     edx, [esi+3Ch]
                mov     ebx, [esi+50h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+1Ch]
                add     edx, eax
                mov     eax, [esi+20h]
                mov     [esi+58h], edx
                mov     edx, [esi+40h]
                mov     ebx, [esi+54h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+20h]
                add     edx, eax
                mov     eax, [esi+24h]
                mov     [esi+5Ch], edx
                mov     edx, [esi+44h]
                mov     ebx, [esi+58h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+24h]
                add     edx, eax
                mov     eax, [esi+28h]
                mov     [esi+60h], edx
                mov     edx, [esi+48h]
                mov     ebx, [esi+5Ch]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+28h]
                add     edx, eax
                mov     eax, [esi+2Ch]
                mov     [esi+64h], edx
                mov     edx, [esi+4Ch]
                mov     ebx, [esi+60h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+2Ch]
                add     edx, eax
                mov     eax, [esi+30h]
                mov     [esi+68h], edx
                mov     edx, [esi+50h]
                mov     ebx, [esi+64h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+30h]
                add     edx, eax
                mov     eax, [esi+34h]
                mov     [esi+6Ch], edx
                mov     edx, [esi+54h]
                mov     ebx, [esi+68h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+34h]
                add     edx, eax
                mov     eax, [esi+38h]
                mov     [esi+70h], edx
                mov     edx, [esi+58h]
                mov     ebx, [esi+6Ch]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+38h]
                add     edx, eax
                mov     eax, [esi+3Ch]
                mov     [esi+74h], edx
                mov     edx, [esi+5Ch]
                mov     ebx, [esi+70h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+3Ch]
                add     edx, eax
                mov     eax, [esi+40h]
                mov     [esi+78h], edx
                mov     edx, [esi+60h]
                mov     ebx, [esi+74h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+40h]
                add     edx, eax
                mov     eax, [esi+44h]
                mov     [esi+7Ch], edx
                mov     edx, [esi+64h]
                mov     ebx, [esi+78h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+44h]
                add     edx, eax
                mov     eax, [esi+48h]
                mov     [esi+80h], edx
                mov     edx, [esi+68h]
                mov     ebx, [esi+7Ch]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+48h]
                add     edx, eax
                mov     eax, [esi+4Ch]
                mov     [esi+84h], edx
                mov     edx, [esi+6Ch]
                mov     ebx, [esi+80h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+4Ch]
                add     edx, eax
                mov     eax, [esi+50h]
                mov     [esi+88h], edx
                mov     edx, [esi+70h]
                mov     ebx, [esi+84h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+50h]
                add     edx, eax
                mov     eax, [esi+54h]
                mov     [esi+8Ch], edx
                mov     edx, [esi+74h]
                mov     ebx, [esi+88h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+54h]
                add     edx, eax
                mov     eax, [esi+58h]
                mov     [esi+90h], edx
                mov     edx, [esi+78h]
                mov     ebx, [esi+8Ch]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+58h]
                add     edx, eax
                mov     eax, [esi+5Ch]
                mov     [esi+94h], edx
                mov     edx, [esi+7Ch]
                mov     ebx, [esi+90h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+5Ch]
                add     edx, eax
                mov     eax, [esi+60h]
                mov     [esi+98h], edx
                mov     edx, [esi+80h]
                mov     ebx, [esi+94h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+60h]
                add     edx, eax
                mov     eax, [esi+64h]
                mov     [esi+9Ch], edx
                mov     edx, [esi+84h]
                mov     ebx, [esi+98h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+64h]
                add     edx, eax
                mov     eax, [esi+68h]
                mov     [esi+0A0h], edx
                mov     edx, [esi+88h]
                mov     ebx, [esi+9Ch]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+68h]
                add     edx, eax
                mov     eax, [esi+6Ch]
                mov     [esi+0A4h], edx
                mov     edx, [esi+8Ch]
                mov     ebx, [esi+0A0h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+6Ch]
                add     edx, eax
                mov     eax, [esi+70h]
                mov     [esi+0A8h], edx
                mov     edx, [esi+90h]
                mov     ebx, [esi+0A4h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+70h]
                add     edx, eax
                mov     eax, [esi+74h]
                mov     [esi+0ACh], edx
                mov     edx, [esi+94h]
                mov     ebx, [esi+0A8h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+74h]
                add     edx, eax
                mov     eax, [esi+78h]
                mov     [esi+0B0h], edx
                mov     edx, [esi+98h]
                mov     ebx, [esi+0ACh]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+78h]
                add     edx, eax
                mov     eax, [esi+7Ch]
                mov     [esi+0B4h], edx
                mov     edx, [esi+9Ch]
                mov     ebx, [esi+0B0h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+7Ch]
                add     edx, eax
                mov     eax, [esi+80h]
                mov     [esi+0B8h], edx
                mov     edx, [esi+0A0h]
                mov     ebx, [esi+0B4h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+80h]
                add     edx, eax
                mov     eax, [esi+84h]
                mov     [esi+0BCh], edx
                mov     edx, [esi+0A4h]
                mov     ebx, [esi+0B8h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+84h]
                add     edx, eax
                mov     eax, [esi+88h]
                mov     [esi+0C0h], edx
                mov     edx, [esi+0A8h]
                mov     ebx, [esi+0BCh]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+88h]
                add     edx, eax
                mov     eax, [esi+8Ch]
                mov     [esi+0C4h], edx
                mov     edx, [esi+0ACh]
                mov     ebx, [esi+0C0h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+8Ch]
                add     edx, eax
                mov     eax, [esi+90h]
                mov     [esi+0C8h], edx
                mov     edx, [esi+0B0h]
                mov     ebx, [esi+0C4h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+90h]
                add     edx, eax
                mov     eax, [esi+94h]
                mov     [esi+0CCh], edx
                mov     edx, [esi+0B4h]
                mov     ebx, [esi+0C8h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+94h]
                add     edx, eax
                mov     eax, [esi+98h]
                mov     [esi+0D0h], edx
                mov     edx, [esi+0B8h]
                mov     ebx, [esi+0CCh]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+98h]
                add     edx, eax
                mov     eax, [esi+9Ch]
                mov     [esi+0D4h], edx
                mov     edx, [esi+0BCh]
                mov     ebx, [esi+0D0h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+9Ch]
                add     edx, eax
                mov     eax, [esi+0A0h]
                mov     [esi+0D8h], edx
                mov     edx, [esi+0C0h]
                mov     ebx, [esi+0D4h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0A0h]
                add     edx, eax
                mov     eax, [esi+0A4h]
                mov     [esi+0DCh], edx
                mov     edx, [esi+0C4h]
                mov     ebx, [esi+0D8h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0A4h]
                add     edx, eax
                mov     eax, [esi+0A8h]
                mov     [esi+0E0h], edx
                mov     edx, [esi+0C8h]
                mov     ebx, [esi+0DCh]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0A8h]
                add     edx, eax
                mov     eax, [esi+0ACh]
                mov     [esi+0E4h], edx
                mov     edx, [esi+0CCh]
                mov     ebx, [esi+0E0h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0ACh]
                add     edx, eax
                mov     eax, [esi+0B0h]
                mov     [esi+0E8h], edx
                mov     edx, [esi+0D0h]
                mov     ebx, [esi+0E4h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0B0h]
                add     edx, eax
                mov     eax, [esi+0B4h]
                mov     [esi+0ECh], edx
                mov     edx, [esi+0D4h]
                mov     ebx, [esi+0E8h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0B4h]
                add     edx, eax
                mov     eax, [esi+0B8h]
                mov     [esi+0F0h], edx
                mov     edx, [esi+0D8h]
                mov     ebx, [esi+0ECh]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0B8h]
                add     edx, eax
                mov     eax, [esi+0BCh]
                mov     [esi+0F4h], edx
                mov     edx, [esi+0DCh]
                mov     ebx, [esi+0F0h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0BCh]
                add     edx, eax
                mov     eax, [esi+0C0h]
                mov     [esi+0F8h], edx
                mov     edx, [esi+0E0h]
                mov     ebx, [esi+0F4h]
                mov     ecx, eax
                ror     ecx, 7
                shr     eax, 3
                mov     ebp, ebx
                shr     ebx, 0Ah
                xor     eax, ecx
                ror     ecx, 0Bh
                rol     ebp, 0Fh
                xor     eax, ecx
                xor     ebx, ebp
                ror     ebp, 2
                xor     ebx, ebp
                add     edx, edi
                add     eax, ebx
                mov     edi, [esi+0C0h]
                add     edx, eax
                mov     eax, [esi+0C4h]
                mov     [esi+0FCh], edx
                mov     edi, [esp+24h]
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     ecx, [edi+18h]
                mov     edx, [edi+1Ch]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     [esp+18h], ecx
                mov     [esp+1Ch], edx
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx+428A2F98h]
                mov     edi, [esp+4]
                xor     ebp, ecx
                add     edx, [esi]
                add     edx, ebp
                mov     ebp, [esp+8]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+0Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+0Ch], edx
                add     eax, ebp
                mov     [esp+1Ch], eax
                mov     eax, [esp+10h]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx+71374491h]
                mov     edi, [esp]
                xor     ebp, ebx
                add     ecx, [esi+4]
                add     ecx, ebp
                mov     ebp, [esp+4]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+1Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+8]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+8], ecx
                add     edx, ebp
                mov     [esp+18h], edx
                mov     edx, [esp+0Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx-4A3F0431h]
                mov     edi, [esp+1Ch]
                xor     ebp, eax
                add     ebx, [esi+8]
                add     ebx, ebp
                mov     ebp, [esp]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+18h]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+4]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+4], ebx
                add     ecx, ebp
                mov     [esp+14h], ecx
                mov     ecx, [esp+8]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax-164A245Bh]
                mov     edi, [esp+18h]
                xor     ebp, edx
                add     eax, [esi+0Ch]
                add     eax, ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+14h]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp], eax
                add     ebx, ebp
                mov     [esp+10h], ebx
                mov     ebx, [esp+4]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx+3956C25Bh]
                mov     edi, [esp+14h]
                xor     ebp, ecx
                add     edx, [esi+10h]
                add     edx, ebp
                mov     ebp, [esp+18h]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp+10h]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+1Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+1Ch], edx
                add     eax, ebp
                mov     [esp+0Ch], eax
                mov     eax, [esp]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx+59F111F1h]
                mov     edi, [esp+10h]
                xor     ebp, ebx
                add     ecx, [esi+14h]
                add     ecx, ebp
                mov     ebp, [esp+14h]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+0Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+18h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+18h], ecx
                add     edx, ebp
                mov     [esp+8], edx
                mov     edx, [esp+1Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx-6DC07D5Ch]
                mov     edi, [esp+0Ch]
                xor     ebp, eax
                add     ebx, [esi+18h]
                add     ebx, ebp
                mov     ebp, [esp+10h]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+8]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+14h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+14h], ebx
                add     ecx, ebp
                mov     [esp+4], ecx
                mov     ecx, [esp+18h]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax-54E3A12Bh]
                mov     edi, [esp+8]
                xor     ebp, edx
                add     eax, [esi+1Ch]
                add     eax, ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+4]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp+10h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+10h], eax
                add     ebx, ebp
                mov     [esp], ebx
                mov     ebx, [esp+14h]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx-27F85568h]
                mov     edi, [esp+4]
                xor     ebp, ecx
                add     edx, [esi+20h]
                add     edx, ebp
                mov     ebp, [esp+8]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+0Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+0Ch], edx
                add     eax, ebp
                mov     [esp+1Ch], eax
                mov     eax, [esp+10h]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx+12835B01h]
                mov     edi, [esp]
                xor     ebp, ebx
                add     ecx, [esi+24h]
                add     ecx, ebp
                mov     ebp, [esp+4]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+1Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+8]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+8], ecx
                add     edx, ebp
                mov     [esp+18h], edx
                mov     edx, [esp+0Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx+243185BEh]
                mov     edi, [esp+1Ch]
                xor     ebp, eax
                add     ebx, [esi+28h]
                add     ebx, ebp
                mov     ebp, [esp]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+18h]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+4]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+4], ebx
                add     ecx, ebp
                mov     [esp+14h], ecx
                mov     ecx, [esp+8]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax+550C7DC3h]
                mov     edi, [esp+18h]
                xor     ebp, edx
                add     eax, [esi+2Ch]
                add     eax, ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+14h]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp], eax
                add     ebx, ebp
                mov     [esp+10h], ebx
                mov     ebx, [esp+4]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx+72BE5D74h]
                mov     edi, [esp+14h]
                xor     ebp, ecx
                add     edx, [esi+30h]
                add     edx, ebp
                mov     ebp, [esp+18h]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp+10h]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+1Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+1Ch], edx
                add     eax, ebp
                mov     [esp+0Ch], eax
                mov     eax, [esp]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx-7F214E02h]
                mov     edi, [esp+10h]
                xor     ebp, ebx
                add     ecx, [esi+34h]
                add     ecx, ebp
                mov     ebp, [esp+14h]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+0Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+18h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+18h], ecx
                add     edx, ebp
                mov     [esp+8], edx
                mov     edx, [esp+1Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx-6423F959h]
                mov     edi, [esp+0Ch]
                xor     ebp, eax
                add     ebx, [esi+38h]
                add     ebx, ebp
                mov     ebp, [esp+10h]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+8]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+14h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+14h], ebx
                add     ecx, ebp
                mov     [esp+4], ecx
                mov     ecx, [esp+18h]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax-3E640E8Ch]
                mov     edi, [esp+8]
                xor     ebp, edx
                add     eax, [esi+3Ch]
                add     eax, ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+4]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp+10h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+10h], eax
                add     ebx, ebp
                mov     [esp], ebx
                mov     ebx, [esp+14h]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx-1B64963Fh]
                mov     edi, [esp+4]
                xor     ebp, ecx
                add     edx, [esi+40h]
                add     edx, ebp
                mov     ebp, [esp+8]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+0Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+0Ch], edx
                add     eax, ebp
                mov     [esp+1Ch], eax
                mov     eax, [esp+10h]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx-1041B87Ah]
                mov     edi, [esp]
                xor     ebp, ebx
                add     ecx, [esi+44h]
                add     ecx, ebp
                mov     ebp, [esp+4]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+1Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+8]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+8], ecx
                add     edx, ebp
                mov     [esp+18h], edx
                mov     edx, [esp+0Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx+0FC19DC6h]
                mov     edi, [esp+1Ch]
                xor     ebp, eax
                add     ebx, [esi+48h]
                add     ebx, ebp
                mov     ebp, [esp]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+18h]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+4]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+4], ebx
                add     ecx, ebp
                mov     [esp+14h], ecx
                mov     ecx, [esp+8]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax+240CA1CCh]
                mov     edi, [esp+18h]
                xor     ebp, edx
                add     eax, [esi+4Ch]
                add     eax, ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+14h]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp], eax
                add     ebx, ebp
                mov     [esp+10h], ebx
                mov     ebx, [esp+4]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx+2DE92C6Fh]
                mov     edi, [esp+14h]
                xor     ebp, ecx
                add     edx, [esi+50h]
                add     edx, ebp
                mov     ebp, [esp+18h]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp+10h]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+1Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+1Ch], edx
                add     eax, ebp
                mov     [esp+0Ch], eax
                mov     eax, [esp]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx+4A7484AAh]
                mov     edi, [esp+10h]
                xor     ebp, ebx
                add     ecx, [esi+54h]
                add     ecx, ebp
                mov     ebp, [esp+14h]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+0Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+18h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+18h], ecx
                add     edx, ebp
                mov     [esp+8], edx
                mov     edx, [esp+1Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx+5CB0A9DCh]
                mov     edi, [esp+0Ch]
                xor     ebp, eax
                add     ebx, [esi+58h]
                add     ebx, ebp
                mov     ebp, [esp+10h]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+8]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+14h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+14h], ebx
                add     ecx, ebp
                mov     [esp+4], ecx
                mov     ecx, [esp+18h]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax+76F988DAh]
                mov     edi, [esp+8]
                xor     ebp, edx
                add     eax, [esi+5Ch]
                add     eax, ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+4]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp+10h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+10h], eax
                add     ebx, ebp
                mov     [esp], ebx
                mov     ebx, [esp+14h]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx-67C1AEAEh]
                mov     edi, [esp+4]
                xor     ebp, ecx
                add     edx, [esi+60h]
                add     edx, ebp
                mov     ebp, [esp+8]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+0Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+0Ch], edx
                add     eax, ebp
                mov     [esp+1Ch], eax
                mov     eax, [esp+10h]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx-57CE3993h]
                mov     edi, [esp]
                xor     ebp, ebx
                add     ecx, [esi+64h]
                add     ecx, ebp
                mov     ebp, [esp+4]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+1Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+8]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+8], ecx
                add     edx, ebp
                mov     [esp+18h], edx
                mov     edx, [esp+0Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx-4FFCD838h]
                mov     edi, [esp+1Ch]
                xor     ebp, eax
                add     ebx, [esi+68h]
                add     ebx, ebp
                mov     ebp, [esp]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+18h]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+4]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+4], ebx
                add     ecx, ebp
                mov     [esp+14h], ecx
                mov     ecx, [esp+8]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax-40A68039h]
                mov     edi, [esp+18h]
                xor     ebp, edx
                add     eax, [esi+6Ch]
                add     eax, ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+14h]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp], eax
                add     ebx, ebp
                mov     [esp+10h], ebx
                mov     ebx, [esp+4]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx-391FF40Dh]
                mov     edi, [esp+14h]
                xor     ebp, ecx
                add     edx, [esi+70h]
                add     edx, ebp
                mov     ebp, [esp+18h]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp+10h]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+1Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+1Ch], edx
                add     eax, ebp
                mov     [esp+0Ch], eax
                mov     eax, [esp]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx-2A586EB9h]
                mov     edi, [esp+10h]
                xor     ebp, ebx
                add     ecx, [esi+74h]
                add     ecx, ebp
                mov     ebp, [esp+14h]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+0Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+18h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+18h], ecx
                add     edx, ebp
                mov     [esp+8], edx
                mov     edx, [esp+1Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx+6CA6351h]
                mov     edi, [esp+0Ch]
                xor     ebp, eax
                add     ebx, [esi+78h]
                add     ebx, ebp
                mov     ebp, [esp+10h]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+8]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+14h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+14h], ebx
                add     ecx, ebp
                mov     [esp+4], ecx
                mov     ecx, [esp+18h]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax+14292967h]
                mov     edi, [esp+8]
                xor     ebp, edx
                add     eax, [esi+7Ch]
                add     eax, ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+4]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp+10h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+10h], eax
                add     ebx, ebp
                mov     [esp], ebx
                mov     ebx, [esp+14h]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx+27B70A85h]
                mov     edi, [esp+4]
                xor     ebp, ecx
                add     edx, [esi+80h]
                add     edx, ebp
                mov     ebp, [esp+8]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+0Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+0Ch], edx
                add     eax, ebp
                mov     [esp+1Ch], eax
                mov     eax, [esp+10h]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx+2E1B2138h]
                mov     edi, [esp]
                xor     ebp, ebx
                add     ecx, [esi+84h]
                add     ecx, ebp
                mov     ebp, [esp+4]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+1Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+8]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+8], ecx
                add     edx, ebp
                mov     [esp+18h], edx
                mov     edx, [esp+0Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx+4D2C6DFCh]
                mov     edi, [esp+1Ch]
                xor     ebp, eax
                add     ebx, [esi+88h]
                add     ebx, ebp
                mov     ebp, [esp]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+18h]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+4]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+4], ebx
                add     ecx, ebp
                mov     [esp+14h], ecx
                mov     ecx, [esp+8]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax+53380D13h]
                mov     edi, [esp+18h]
                xor     ebp, edx
                add     eax, [esi+8Ch]
                add     eax, ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+14h]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp], eax
                add     ebx, ebp
                mov     [esp+10h], ebx
                mov     ebx, [esp+4]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx+650A7354h]
                mov     edi, [esp+14h]
                xor     ebp, ecx
                add     edx, [esi+90h]
                add     edx, ebp
                mov     ebp, [esp+18h]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp+10h]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+1Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+1Ch], edx
                add     eax, ebp
                mov     [esp+0Ch], eax
                mov     eax, [esp]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx+766A0ABBh]
                mov     edi, [esp+10h]
                xor     ebp, ebx
                add     ecx, [esi+94h]
                add     ecx, ebp
                mov     ebp, [esp+14h]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+0Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+18h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+18h], ecx
                add     edx, ebp
                mov     [esp+8], edx
                mov     edx, [esp+1Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx-7E3D36D2h]
                mov     edi, [esp+0Ch]
                xor     ebp, eax
                add     ebx, [esi+98h]
                add     ebx, ebp
                mov     ebp, [esp+10h]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+8]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+14h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+14h], ebx
                add     ecx, ebp
                mov     [esp+4], ecx
                mov     ecx, [esp+18h]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax-6D8DD37Bh]
                mov     edi, [esp+8]
                xor     ebp, edx
                add     eax, [esi+9Ch]
                add     eax, ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+4]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp+10h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+10h], eax
                add     ebx, ebp
                mov     [esp], ebx
                mov     ebx, [esp+14h]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx-5D40175Fh]
                mov     edi, [esp+4]
                xor     ebp, ecx
                add     edx, [esi+0A0h]
                add     edx, ebp
                mov     ebp, [esp+8]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+0Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+0Ch], edx
                add     eax, ebp
                mov     [esp+1Ch], eax
                mov     eax, [esp+10h]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx-57E599B5h]
                mov     edi, [esp]
                xor     ebp, ebx
                add     ecx, [esi+0A4h]
                add     ecx, ebp
                mov     ebp, [esp+4]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+1Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+8]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+8], ecx
                add     edx, ebp
                mov     [esp+18h], edx
                mov     edx, [esp+0Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx-3DB47490h]
                mov     edi, [esp+1Ch]
                xor     ebp, eax
                add     ebx, [esi+0A8h]
                add     ebx, ebp
                mov     ebp, [esp]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+18h]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+4]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+4], ebx
                add     ecx, ebp
                mov     [esp+14h], ecx
                mov     ecx, [esp+8]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax-3893AE5Dh]
                mov     edi, [esp+18h]
                xor     ebp, edx
                add     eax, [esi+0ACh]
                add     eax, ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+14h]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp], eax
                add     ebx, ebp
                mov     [esp+10h], ebx
                mov     ebx, [esp+4]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx-2E6D17E7h]
                mov     edi, [esp+14h]
                xor     ebp, ecx
                add     edx, [esi+0B0h]
                add     edx, ebp
                mov     ebp, [esp+18h]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp+10h]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+1Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+1Ch], edx
                add     eax, ebp
                mov     [esp+0Ch], eax
                mov     eax, [esp]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx-2966F9DCh]
                mov     edi, [esp+10h]
                xor     ebp, ebx
                add     ecx, [esi+0B4h]
                add     ecx, ebp
                mov     ebp, [esp+14h]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+0Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+18h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+18h], ecx
                add     edx, ebp
                mov     [esp+8], edx
                mov     edx, [esp+1Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx-0BF1CA7Bh]
                mov     edi, [esp+0Ch]
                xor     ebp, eax
                add     ebx, [esi+0B8h]
                add     ebx, ebp
                mov     ebp, [esp+10h]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+8]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+14h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+14h], ebx
                add     ecx, ebp
                mov     [esp+4], ecx
                mov     ecx, [esp+18h]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax+106AA070h]
                mov     edi, [esp+8]
                xor     ebp, edx
                add     eax, [esi+0BCh]
                add     eax, ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+4]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp+10h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+10h], eax
                add     ebx, ebp
                mov     [esp], ebx
                mov     ebx, [esp+14h]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx+19A4C116h]
                mov     edi, [esp+4]
                xor     ebp, ecx
                add     edx, [esi+0C0h]
                add     edx, ebp
                mov     ebp, [esp+8]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+0Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+0Ch], edx
                add     eax, ebp
                mov     [esp+1Ch], eax
                mov     eax, [esp+10h]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx+1E376C08h]
                mov     edi, [esp]
                xor     ebp, ebx
                add     ecx, [esi+0C4h]
                add     ecx, ebp
                mov     ebp, [esp+4]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+1Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+8]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+8], ecx
                add     edx, ebp
                mov     [esp+18h], edx
                mov     edx, [esp+0Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx+2748774Ch]
                mov     edi, [esp+1Ch]
                xor     ebp, eax
                add     ebx, [esi+0C8h]
                add     ebx, ebp
                mov     ebp, [esp]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+18h]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+4]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+4], ebx
                add     ecx, ebp
                mov     [esp+14h], ecx
                mov     ecx, [esp+8]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax+34B0BCB5h]
                mov     edi, [esp+18h]
                xor     ebp, edx
                add     eax, [esi+0CCh]
                add     eax, ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+14h]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp], eax
                add     ebx, ebp
                mov     [esp+10h], ebx
                mov     ebx, [esp+4]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx+391C0CB3h]
                mov     edi, [esp+14h]
                xor     ebp, ecx
                add     edx, [esi+0D0h]
                add     edx, ebp
                mov     ebp, [esp+18h]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp+10h]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+1Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+1Ch], edx
                add     eax, ebp
                mov     [esp+0Ch], eax
                mov     eax, [esp]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx+4ED8AA4Ah]
                mov     edi, [esp+10h]
                xor     ebp, ebx
                add     ecx, [esi+0D4h]
                add     ecx, ebp
                mov     ebp, [esp+14h]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+0Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+18h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+18h], ecx
                add     edx, ebp
                mov     [esp+8], edx
                mov     edx, [esp+1Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx+5B9CCA4Fh]
                mov     edi, [esp+0Ch]
                xor     ebp, eax
                add     ebx, [esi+0D8h]
                add     ebx, ebp
                mov     ebp, [esp+10h]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+8]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+14h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+14h], ebx
                add     ecx, ebp
                mov     [esp+4], ecx
                mov     ecx, [esp+18h]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax+682E6FF3h]
                mov     edi, [esp+8]
                xor     ebp, edx
                add     eax, [esi+0DCh]
                add     eax, ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+4]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp+10h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+10h], eax
                add     ebx, ebp
                mov     [esp], ebx
                mov     ebx, [esp+14h]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx+748F82EEh]
                mov     edi, [esp+4]
                xor     ebp, ecx
                add     edx, [esi+0E0h]
                add     edx, ebp
                mov     ebp, [esp+8]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+0Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+0Ch], edx
                add     eax, ebp
                mov     [esp+1Ch], eax
                mov     eax, [esp+10h]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx+78A5636Fh]
                mov     edi, [esp]
                xor     ebp, ebx
                add     ecx, [esi+0E4h]
                add     ecx, ebp
                mov     ebp, [esp+4]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+1Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+8]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+8], ecx
                add     edx, ebp
                mov     [esp+18h], edx
                mov     edx, [esp+0Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx-7B3787ECh]
                mov     edi, [esp+1Ch]
                xor     ebp, eax
                add     ebx, [esi+0E8h]
                add     ebx, ebp
                mov     ebp, [esp]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+18h]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+4]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+4], ebx
                add     ecx, ebp
                mov     [esp+14h], ecx
                mov     ecx, [esp+8]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax-7338FDF8h]
                mov     edi, [esp+18h]
                xor     ebp, edx
                add     eax, [esi+0ECh]
                add     eax, ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+14h]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp], eax
                add     ebx, ebp
                mov     [esp+10h], ebx
                mov     ebx, [esp+4]
                mov     ebp, eax
                mov     edi, eax
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ebx
                xor     ebp, ecx
                and     ebp, eax
                lea     edx, [edi+edx-6F410006h]
                mov     edi, [esp+14h]
                xor     ebp, ecx
                add     edx, [esi+0F0h]
                add     edx, ebp
                mov     ebp, [esp+18h]
                mov     eax, edi
                and     edi, ebp
                or      eax, ebp
                mov     ebp, [esp+10h]
                and     eax, ebp
                ror     ebp, 2
                or      eax, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     eax, edx
                xor     ebp, edi
                add     edx, [esp+1Ch]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+1Ch], edx
                add     eax, ebp
                mov     [esp+0Ch], eax
                mov     eax, [esp]
                mov     ebp, edx
                mov     edi, edx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, eax
                xor     ebp, ebx
                and     ebp, edx
                lea     ecx, [edi+ecx-5BAF9315h]
                mov     edi, [esp+10h]
                xor     ebp, ebx
                add     ecx, [esi+0F4h]
                add     ecx, ebp
                mov     ebp, [esp+14h]
                mov     edx, edi
                and     edi, ebp
                or      edx, ebp
                mov     ebp, [esp+0Ch]
                and     edx, ebp
                ror     ebp, 2
                or      edx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     edx, ecx
                xor     ebp, edi
                add     ecx, [esp+18h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+18h], ecx
                add     edx, ebp
                mov     [esp+8], edx
                mov     edx, [esp+1Ch]
                mov     ebp, ecx
                mov     edi, ecx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, edx
                xor     ebp, eax
                and     ebp, ecx
                lea     ebx, [edi+ebx-41065C09h]
                mov     edi, [esp+0Ch]
                xor     ebp, eax
                add     ebx, [esi+0F8h]
                add     ebx, ebp
                mov     ebp, [esp+10h]
                mov     ecx, edi
                and     edi, ebp
                or      ecx, ebp
                mov     ebp, [esp+8]
                and     ecx, ebp
                ror     ebp, 2
                or      ecx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ecx, ebx
                xor     ebp, edi
                add     ebx, [esp+14h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+14h], ebx
                add     ecx, ebp
                mov     [esp+4], ecx
                mov     ecx, [esp+18h]
                mov     ebp, ebx
                mov     edi, ebx
                ror     ebp, 6
                rol     edi, 7
                xor     edi, ebp
                ror     ebp, 5
                xor     edi, ebp
                mov     ebp, ecx
                xor     ebp, edx
                and     ebp, ebx
                lea     eax, [edi+eax-398E870Eh]
                mov     edi, [esp+8]
                xor     ebp, edx
                add     eax, [esi+0FCh]
                add     eax, ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, edi
                and     edi, ebp
                or      ebx, ebp
                mov     ebp, [esp+4]
                and     ebx, ebp
                ror     ebp, 2
                or      ebx, edi
                mov     edi, ebp
                rol     edi, 0Ch
                add     ebx, eax
                xor     ebp, edi
                add     eax, [esp+10h]
                rol     edi, 9
                xor     ebp, edi
                mov     [esp+10h], eax
                add     ebx, ebp
                mov     [esp], ebx
                mov     ebx, [esp+14h]
                mov     edi, [esp+24h]
                add     [edi+10h], eax
                add     [edi+14h], ebx
                add     [edi+18h], ecx
                add     [edi+1Ch], edx
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                mov     ebp, [esp+28h]
                add     [edi], eax
                add     [edi+4], ebx
                mov     esp, ebp
                add     [edi+8], ecx
                add     [edi+0Ch], edx
                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
  end;
end;
{$ENDIF}

{$IFDEF THash_SHA384_asm}
procedure SHA384Buffer(S, D: Pointer); assembler;
asm
                push ebx
                push edi
                mov  edi, eax
                push esi
                mov  esi, edx

                mov     eax, [esi]
                mov     ebx, [esi+4]
                bswap   eax
                bswap   ebx
                mov     ecx, [esi+8]
                mov     edx, [esi+0Ch]
                bswap   ecx
                bswap   edx
                mov     [edi], ebx
                mov     [edi+4], eax
                mov     [edi+8], edx
                mov     [edi+0Ch], ecx
                mov     eax, [esi+10h]
                mov     ebx, [esi+14h]
                bswap   eax
                bswap   ebx
                mov     ecx, [esi+18h]
                mov     edx, [esi+1Ch]
                bswap   ecx
                bswap   edx
                mov     [edi+10h], ebx
                mov     [edi+14h], eax
                mov     [edi+18h], edx
                mov     [edi+1Ch], ecx
                mov     eax, [esi+20h]
                mov     ebx, [esi+24h]
                bswap   eax
                bswap   ebx
                mov     ecx, [esi+28h]
                mov     edx, [esi+2Ch]
                bswap   ecx
                bswap   edx
                mov     [edi+20h], ebx
                mov     [edi+24h], eax
                mov     [edi+28h], edx
                mov     [edi+2Ch], ecx
                mov     eax, [esi+30h]
                mov     ebx, [esi+34h]
                bswap   eax
                bswap   ebx
                mov     ecx, [esi+38h]
                mov     edx, [esi+3Ch]
                bswap   ecx
                bswap   edx
                mov     [edi+30h], ebx
                mov     [edi+34h], eax
                mov     [edi+38h], edx
                mov     [edi+3Ch], ecx



                pop  esi
                pop  edi
                pop  ebx
end;

procedure THash_SHA384.DoTransform(Buffer: PLongArray);
var
  W: array [0..159] of LongWord;
begin
  // swap first 16 uint64
  SHA384Buffer(@W[0],  @Buffer[0]);
  SHA384Buffer(Pointer(LongInt(@W[0]) + 16*4), Pointer(LongInt(@Buffer[0]) + 16*4));
  asm
    push    ebx
    push    esi
    push    edi
    push    ebp

    mov     eax, Self
    lea     edi, [eax].THash_SHA512.FDigest
    lea     esi, W
    lea     ebp, SHA_512K

  //  {$INCLUDE sha512t.inc}  // include sha512 asm transform code

                sub     esp, 60h
                mov     [esp+54h], ebp
                mov     [esp+5Ch], edi
                mov     [esp+58h], esi
                mov     dword ptr [esp+50h], 10h

@@buffexpand_loop:
                mov     ebp, [esi+8]
                mov     eax, [esi+0Ch]
                mov     ecx, ebp
                mov     edi, eax
                shl     eax, 18h
                mov     edx, edi
                shr     ecx, 1
                mov     ebx, eax
                shl     edx, 1Fh
                shl     ebx, 1
                or      edx, ecx
                shr     ecx, 6
                or      ebx, ecx
                shr     ecx, 1
                xor     edx, ebx
                shl     ebp, 18h
                or      eax, ecx
                shr     edi, 1
                mov     ecx, ebp
                shl     ecx, 7
                or      ecx, edi
                shr     edi, 6
                xor     edx, eax
                xor     ecx, edi
                mov     [esp+40h], edx
                shr     edi, 1
                or      ebp, edi
                xor     ecx, ebp
                mov     ebp, [esi+70h]
                mov     edi, [esi+74h]
                mov     [esp+44h], ecx
                mov     ecx, ebp
                mov     edx, edi
                shl     ecx, 3
                mov     eax, ebp
                shr     edx, 1Dh
                mov     ebx, edi
                shr     eax, 6
                or      edx, ecx
                shl     ebx, 1Ah
                or      eax, ebx
                mov     ebx, edi
                xor     edx, eax
                shr     eax, 0Dh
                mov     ecx, ebp
                shl     ebx, 0Dh
                or      eax, ebx
                shr     ecx, 1Dh
                xor     eax, edx
                mov     edx, edi
                shl     edx, 3
                shr     edi, 6
                or      edx, ecx
                xor     edx, edi
                shr     edi, 0Dh
                mov     ecx, eax
                shl     ebp, 0Dh
                mov     eax, [esp+40h]
                or      edi, ebp
                mov     ebx, [esp+44h]
                xor     edx, edi
                mov     ebp, [esi]
                mov     edi, [esi+4]
                add     eax, ecx
                adc     ebx, edx
                add     eax, ebp
                adc     ebx, edi
                mov     ebp, [esi+48h]
                mov     edi, [esi+4Ch]
                add     eax, ebp
                adc     ebx, edi
                mov     [esi+80h], eax
                mov     [esi+84h], ebx
                mov     ebp, [esi+10h]
                mov     eax, [esi+14h]
                mov     ecx, ebp
                mov     edi, eax
                shl     eax, 18h
                mov     edx, edi
                shr     ecx, 1
                mov     ebx, eax
                shl     edx, 1Fh
                shl     ebx, 1
                or      edx, ecx
                shr     ecx, 6
                or      ebx, ecx
                shr     ecx, 1
                xor     edx, ebx
                shl     ebp, 18h
                or      eax, ecx
                shr     edi, 1
                mov     ecx, ebp
                shl     ecx, 7
                or      ecx, edi
                shr     edi, 6
                xor     edx, eax
                xor     ecx, edi
                mov     [esp+40h], edx
                shr     edi, 1
                or      ebp, edi
                xor     ecx, ebp
                mov     ebp, [esi+78h]
                mov     edi, [esi+7Ch]
                mov     [esp+44h], ecx
                mov     ecx, ebp
                mov     edx, edi
                shl     ecx, 3
                mov     eax, ebp
                shr     edx, 1Dh
                mov     ebx, edi
                shr     eax, 6
                or      edx, ecx
                shl     ebx, 1Ah
                or      eax, ebx
                mov     ebx, edi
                xor     edx, eax
                shr     eax, 0Dh
                mov     ecx, ebp
                shl     ebx, 0Dh
                or      eax, ebx
                shr     ecx, 1Dh
                xor     eax, edx
                mov     edx, edi
                shl     edx, 3
                shr     edi, 6
                or      edx, ecx
                xor     edx, edi
                shr     edi, 0Dh
                mov     ecx, eax
                shl     ebp, 0Dh
                mov     eax, [esp+40h]
                or      edi, ebp
                mov     ebx, [esp+44h]
                xor     edx, edi
                mov     ebp, [esi+8]
                mov     edi, [esi+0Ch]
                add     eax, ecx
                adc     ebx, edx
                add     eax, ebp
                adc     ebx, edi
                mov     ebp, [esi+50h]
                mov     edi, [esi+54h]
                add     eax, ebp
                adc     ebx, edi
                mov     [esi+88h], eax
                mov     [esi+8Ch], ebx
                add     esi, 10h
                add     dword ptr [esp+50h], 2
                cmp     dword ptr [esp+50h], 50h 
                jnz     @@buffexpand_loop
                mov     edi, [esp+5Ch]
                mov     esi, [esp+58h]
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     ecx, [edi+18h]
                mov     edx, [edi+1Ch]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     [esp+18h], ecx
                mov     [esp+1Ch], edx
                mov     eax, [edi+20h]
                mov     ebx, [edi+24h]
                mov     ecx, [edi+28h]
                mov     edx, [edi+2Ch]
                mov     [esp+20h], eax
                mov     [esp+24h], ebx
                mov     [esp+28h], ecx
                mov     [esp+2Ch], edx
                mov     eax, [edi+30h]
                mov     ebx, [edi+34h]
                mov     ecx, [edi+38h]
                mov     edx, [edi+3Ch]
                mov     [esp+30h], eax
                mov     [esp+34h], ebx
                xor     eax, eax
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     [esp+50h], eax

@@body_loop:                            
                mov     eax, [esp+20h]
                mov     ebx, [esp+24h]
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 0Eh
                mov     ebp, eax
                shl     edx, 12h
                mov     edi, ebx
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+40h], ebp
                shr     ecx, 0Eh
                mov     ebp, ebx
                shl     edx, 12h
                mov     edi, eax
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, [esp+2Ch]
                xor     ebp, ecx
                mov     ecx, [esp+28h]
                mov     [esp+44h], ebp
                mov     ebp, [esp+30h]
                mov     edi, [esp+34h]
                xor     ecx, ebp
                xor     edx, edi
                and     ecx, eax
                and     edx, ebx
                xor     ecx, ebp
                xor     edx, edi
                add     ecx, [esp+40h]
                mov     eax, [esp+38h]
                adc     edx, [esp+44h]
                mov     ebx, [esp+3Ch]
                add     ecx, eax
                mov     edi, [esp+50h]
                adc     edx, ebx
                mov     ebp, [esp+54h]
                shl     edi, 3
                add     edi, 0
                shl     edi, 3
                mov     eax, [edi+ebp]
                mov     ebx, [edi+ebp+4]
                add     ecx, eax
                mov     eax, [esi+edi]
                adc     edx, ebx
                mov     ebx, [esi+edi+4]
                add     ecx, eax
                mov     eax, [esp]
                adc     edx, ebx
                mov     ebx, [esp+4]
                mov     [esp+40h], ecx
                mov     [esp+44h], edx
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 1Ch
                mov     ebp, eax
                shl     edx, 4
                mov     edi, ebx
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shr     edx, 7
                shl     ecx, 19h
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+48h], ebp
                shr     ecx, 1Ch
                mov     ebp, ebx
                shl     edx, 4
                mov     edi, eax
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 19h
                shr     edx, 7
                or      ecx, edx
                mov     edx, [esp+0Ch]
                xor     ebp, ecx
                mov     ecx, [esp+8]
                mov     [esp+4Ch], ebp
                mov     ebp, [esp+10h]
                mov     edi, [esp+14h]
                or      ecx, ebp
                or      edx, edi
                and     eax, ecx
                and     ebx, edx
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                and     edi, edx
                or      eax, ebp
                or      ebx, edi
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                add     eax, ecx
                mov     ebp, [esp+40h]
                adc     ebx, edx
                mov     ecx, [esp+18h]
                mov     edx, [esp+1Ch]
                mov     edi, [esp+44h]
                add     ecx, ebp
                adc     edx, edi
                mov     [esp+18h], ecx
                mov     [esp+1Ch], edx
                add     ebp, eax
                adc     edi, ebx
                mov     [esp+38h], ebp
                mov     [esp+3Ch], edi
                mov     eax, [esp+18h]
                mov     ebx, [esp+1Ch]
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 0Eh
                mov     ebp, eax
                shl     edx, 12h
                mov     edi, ebx
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+40h], ebp
                shr     ecx, 0Eh
                mov     ebp, ebx
                shl     edx, 12h
                mov     edi, eax
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, [esp+24h]
                xor     ebp, ecx
                mov     ecx, [esp+20h]
                mov     [esp+44h], ebp
                mov     ebp, [esp+28h]
                mov     edi, [esp+2Ch]
                xor     ecx, ebp
                xor     edx, edi
                and     ecx, eax
                and     edx, ebx
                xor     ecx, ebp
                xor     edx, edi
                add     ecx, [esp+40h]
                mov     eax, [esp+30h]
                adc     edx, [esp+44h]
                mov     ebx, [esp+34h]
                add     ecx, eax
                mov     edi, [esp+50h]
                adc     edx, ebx
                mov     ebp, [esp+54h]
                shl     edi, 3
                add     edi, 1
                shl     edi, 3
                mov     eax, [edi+ebp]
                mov     ebx, [edi+ebp+4]
                add     ecx, eax
                mov     eax, [esi+edi]
                adc     edx, ebx
                mov     ebx, [esi+edi+4]
                add     ecx, eax
                mov     eax, [esp+38h]
                adc     edx, ebx
                mov     ebx, [esp+3Ch]
                mov     [esp+40h], ecx
                mov     [esp+44h], edx
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 1Ch
                mov     ebp, eax
                shl     edx, 4
                mov     edi, ebx
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shr     edx, 7
                shl     ecx, 19h
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+48h], ebp
                shr     ecx, 1Ch
                mov     ebp, ebx
                shl     edx, 4
                mov     edi, eax
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 19h
                shr     edx, 7
                or      ecx, edx
                mov     edx, [esp+4]
                xor     ebp, ecx
                mov     ecx, [esp]
                mov     [esp+4Ch], ebp
                mov     ebp, [esp+8]
                mov     edi, [esp+0Ch]
                or      ecx, ebp
                or      edx, edi
                and     eax, ecx
                and     ebx, edx
                mov     ecx, [esp]
                mov     edx, [esp+4]
                and     ebp, ecx
                and     edi, edx
                or      eax, ebp
                or      ebx, edi
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                add     eax, ecx
                mov     ebp, [esp+40h]
                adc     ebx, edx
                mov     ecx, [esp+10h]
                mov     edx, [esp+14h]
                mov     edi, [esp+44h]
                add     ecx, ebp
                adc     edx, edi
                mov     [esp+10h], ecx
                mov     [esp+14h], edx
                add     ebp, eax
                adc     edi, ebx
                mov     [esp+30h], ebp
                mov     [esp+34h], edi
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 0Eh
                mov     ebp, eax
                shl     edx, 12h
                mov     edi, ebx
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+40h], ebp
                shr     ecx, 0Eh
                mov     ebp, ebx
                shl     edx, 12h
                mov     edi, eax
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, [esp+1Ch]
                xor     ebp, ecx
                mov     ecx, [esp+18h]
                mov     [esp+44h], ebp
                mov     ebp, [esp+20h]
                mov     edi, [esp+24h]
                xor     ecx, ebp
                xor     edx, edi
                and     ecx, eax
                and     edx, ebx
                xor     ecx, ebp
                xor     edx, edi
                add     ecx, [esp+40h]
                mov     eax, [esp+28h]
                adc     edx, [esp+44h]
                mov     ebx, [esp+2Ch]
                add     ecx, eax
                mov     edi, [esp+50h]
                adc     edx, ebx
                mov     ebp, [esp+54h]
                shl     edi, 3
                add     edi, 2
                shl     edi, 3
                mov     eax, [edi+ebp]
                mov     ebx, [edi+ebp+4]
                add     ecx, eax
                mov     eax, [esi+edi]
                adc     edx, ebx
                mov     ebx, [esi+edi+4]
                add     ecx, eax
                mov     eax, [esp+30h]
                adc     edx, ebx
                mov     ebx, [esp+34h]
                mov     [esp+40h], ecx
                mov     [esp+44h], edx
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 1Ch
                mov     ebp, eax
                shl     edx, 4
                mov     edi, ebx
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shr     edx, 7
                shl     ecx, 19h
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+48h], ebp
                shr     ecx, 1Ch
                mov     ebp, ebx
                shl     edx, 4
                mov     edi, eax
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 19h
                shr     edx, 7
                or      ecx, edx
                mov     edx, [esp+3Ch]
                xor     ebp, ecx
                mov     ecx, [esp+38h]
                mov     [esp+4Ch], ebp
                mov     ebp, [esp]
                mov     edi, [esp+4]
                or      ecx, ebp
                or      edx, edi
                and     eax, ecx
                and     ebx, edx
                mov     ecx, [esp+38h]
                mov     edx, [esp+3Ch]
                and     ebp, ecx
                and     edi, edx
                or      eax, ebp
                or      ebx, edi
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                add     eax, ecx
                mov     ebp, [esp+40h]
                adc     ebx, edx
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                mov     edi, [esp+44h]
                add     ecx, ebp
                adc     edx, edi
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                add     ebp, eax
                adc     edi, ebx
                mov     [esp+28h], ebp
                mov     [esp+2Ch], edi
                mov     eax, [esp+8]
                mov     ebx, [esp+0Ch]
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 0Eh
                mov     ebp, eax
                shl     edx, 12h
                mov     edi, ebx
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+40h], ebp
                shr     ecx, 0Eh
                mov     ebp, ebx
                shl     edx, 12h
                mov     edi, eax
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, [esp+14h]
                xor     ebp, ecx
                mov     ecx, [esp+10h]
                mov     [esp+44h], ebp
                mov     ebp, [esp+18h]
                mov     edi, [esp+1Ch]
                xor     ecx, ebp
                xor     edx, edi
                and     ecx, eax
                and     edx, ebx
                xor     ecx, ebp
                xor     edx, edi
                add     ecx, [esp+40h]
                mov     eax, [esp+20h]
                adc     edx, [esp+44h]
                mov     ebx, [esp+24h]
                add     ecx, eax
                mov     edi, [esp+50h]
                adc     edx, ebx
                mov     ebp, [esp+54h]
                shl     edi, 3
                add     edi, 3
                shl     edi, 3
                mov     eax, [edi+ebp]
                mov     ebx, [edi+ebp+4]
                add     ecx, eax
                mov     eax, [esi+edi]
                adc     edx, ebx
                mov     ebx, [esi+edi+4]
                add     ecx, eax
                mov     eax, [esp+28h]
                adc     edx, ebx
                mov     ebx, [esp+2Ch]
                mov     [esp+40h], ecx
                mov     [esp+44h], edx
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 1Ch
                mov     ebp, eax
                shl     edx, 4
                mov     edi, ebx
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shr     edx, 7
                shl     ecx, 19h
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+48h], ebp
                shr     ecx, 1Ch
                mov     ebp, ebx
                shl     edx, 4
                mov     edi, eax
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 19h
                shr     edx, 7
                or      ecx, edx
                mov     edx, [esp+34h]
                xor     ebp, ecx
                mov     ecx, [esp+30h]
                mov     [esp+4Ch], ebp
                mov     ebp, [esp+38h]
                mov     edi, [esp+3Ch]
                or      ecx, ebp
                or      edx, edi
                and     eax, ecx
                and     ebx, edx
                mov     ecx, [esp+30h]
                mov     edx, [esp+34h]
                and     ebp, ecx
                and     edi, edx
                or      eax, ebp
                or      ebx, edi
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                add     eax, ecx
                mov     ebp, [esp+40h]
                adc     ebx, edx
                mov     ecx, [esp]
                mov     edx, [esp+4]
                mov     edi, [esp+44h]
                add     ecx, ebp
                adc     edx, edi
                mov     [esp], ecx
                mov     [esp+4], edx
                add     ebp, eax
                adc     edi, ebx
                mov     [esp+20h], ebp
                mov     [esp+24h], edi
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 0Eh
                mov     ebp, eax
                shl     edx, 12h
                mov     edi, ebx
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+40h], ebp
                shr     ecx, 0Eh
                mov     ebp, ebx
                shl     edx, 12h
                mov     edi, eax
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, [esp+0Ch]
                xor     ebp, ecx
                mov     ecx, [esp+8]
                mov     [esp+44h], ebp
                mov     ebp, [esp+10h]
                mov     edi, [esp+14h]
                xor     ecx, ebp
                xor     edx, edi
                and     ecx, eax
                and     edx, ebx
                xor     ecx, ebp
                xor     edx, edi
                add     ecx, [esp+40h]
                mov     eax, [esp+18h]
                adc     edx, [esp+44h]
                mov     ebx, [esp+1Ch]
                add     ecx, eax
                mov     edi, [esp+50h]
                adc     edx, ebx
                mov     ebp, [esp+54h]
                shl     edi, 3
                add     edi, 4
                shl     edi, 3
                mov     eax, [edi+ebp]
                mov     ebx, [edi+ebp+4]
                add     ecx, eax
                mov     eax, [esi+edi]
                adc     edx, ebx
                mov     ebx, [esi+edi+4]
                add     ecx, eax
                mov     eax, [esp+20h]
                adc     edx, ebx
                mov     ebx, [esp+24h]
                mov     [esp+40h], ecx
                mov     [esp+44h], edx
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 1Ch
                mov     ebp, eax
                shl     edx, 4
                mov     edi, ebx
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shr     edx, 7
                shl     ecx, 19h
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+48h], ebp
                shr     ecx, 1Ch
                mov     ebp, ebx
                shl     edx, 4
                mov     edi, eax
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 19h
                shr     edx, 7
                or      ecx, edx
                mov     edx, [esp+2Ch]
                xor     ebp, ecx
                mov     ecx, [esp+28h]
                mov     [esp+4Ch], ebp
                mov     ebp, [esp+30h]
                mov     edi, [esp+34h]
                or      ecx, ebp
                or      edx, edi
                and     eax, ecx
                and     ebx, edx
                mov     ecx, [esp+28h]
                mov     edx, [esp+2Ch]
                and     ebp, ecx
                and     edi, edx
                or      eax, ebp
                or      ebx, edi
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                add     eax, ecx
                mov     ebp, [esp+40h]
                adc     ebx, edx
                mov     ecx, [esp+38h]
                mov     edx, [esp+3Ch]
                mov     edi, [esp+44h]
                add     ecx, ebp
                adc     edx, edi
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                add     ebp, eax
                adc     edi, ebx
                mov     [esp+18h], ebp
                mov     [esp+1Ch], edi
                mov     eax, [esp+38h]
                mov     ebx, [esp+3Ch]
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 0Eh
                mov     ebp, eax
                shl     edx, 12h
                mov     edi, ebx
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+40h], ebp
                shr     ecx, 0Eh
                mov     ebp, ebx
                shl     edx, 12h
                mov     edi, eax
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, [esp+4]
                xor     ebp, ecx
                mov     ecx, [esp]
                mov     [esp+44h], ebp
                mov     ebp, [esp+8]
                mov     edi, [esp+0Ch]
                xor     ecx, ebp
                xor     edx, edi
                and     ecx, eax
                and     edx, ebx
                xor     ecx, ebp
                xor     edx, edi
                add     ecx, [esp+40h]
                mov     eax, [esp+10h]
                adc     edx, [esp+44h]
                mov     ebx, [esp+14h]
                add     ecx, eax
                mov     edi, [esp+50h]
                adc     edx, ebx
                mov     ebp, [esp+54h]
                shl     edi, 3
                add     edi, 5
                shl     edi, 3
                mov     eax, [edi+ebp]
                mov     ebx, [edi+ebp+4]
                add     ecx, eax
                mov     eax, [esi+edi]
                adc     edx, ebx
                mov     ebx, [esi+edi+4]
                add     ecx, eax
                mov     eax, [esp+18h]
                adc     edx, ebx
                mov     ebx, [esp+1Ch]
                mov     [esp+40h], ecx
                mov     [esp+44h], edx
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 1Ch
                mov     ebp, eax
                shl     edx, 4
                mov     edi, ebx
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shr     edx, 7
                shl     ecx, 19h
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+48h], ebp
                shr     ecx, 1Ch
                mov     ebp, ebx
                shl     edx, 4
                mov     edi, eax
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 19h
                shr     edx, 7
                or      ecx, edx
                mov     edx, [esp+24h]
                xor     ebp, ecx
                mov     ecx, [esp+20h]
                mov     [esp+4Ch], ebp
                mov     ebp, [esp+28h]
                mov     edi, [esp+2Ch]
                or      ecx, ebp
                or      edx, edi
                and     eax, ecx
                and     ebx, edx
                mov     ecx, [esp+20h]
                mov     edx, [esp+24h]
                and     ebp, ecx
                and     edi, edx
                or      eax, ebp
                or      ebx, edi
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                add     eax, ecx
                mov     ebp, [esp+40h]
                adc     ebx, edx
                mov     ecx, [esp+30h]
                mov     edx, [esp+34h]
                mov     edi, [esp+44h]
                add     ecx, ebp
                adc     edx, edi
                mov     [esp+30h], ecx
                mov     [esp+34h], edx
                add     ebp, eax
                adc     edi, ebx
                mov     [esp+10h], ebp
                mov     [esp+14h], edi
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 0Eh
                mov     ebp, eax
                shl     edx, 12h
                mov     edi, ebx
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+40h], ebp
                shr     ecx, 0Eh
                mov     ebp, ebx
                shl     edx, 12h
                mov     edi, eax
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, [esp+3Ch]
                xor     ebp, ecx
                mov     ecx, [esp+38h]
                mov     [esp+44h], ebp
                mov     ebp, [esp]
                mov     edi, [esp+4]
                xor     ecx, ebp
                xor     edx, edi
                and     ecx, eax
                and     edx, ebx
                xor     ecx, ebp
                xor     edx, edi
                add     ecx, [esp+40h]
                mov     eax, [esp+8]
                adc     edx, [esp+44h]
                mov     ebx, [esp+0Ch]
                add     ecx, eax
                mov     edi, [esp+50h]
                adc     edx, ebx
                mov     ebp, [esp+54h]
                shl     edi, 3
                add     edi, 6
                shl     edi, 3
                mov     eax, [edi+ebp]
                mov     ebx, [edi+ebp+4]
                add     ecx, eax
                mov     eax, [esi+edi]
                adc     edx, ebx
                mov     ebx, [esi+edi+4]
                add     ecx, eax
                mov     eax, [esp+10h]
                adc     edx, ebx
                mov     ebx, [esp+14h]
                mov     [esp+40h], ecx
                mov     [esp+44h], edx
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 1Ch
                mov     ebp, eax
                shl     edx, 4
                mov     edi, ebx
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shr     edx, 7
                shl     ecx, 19h
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+48h], ebp
                shr     ecx, 1Ch
                mov     ebp, ebx
                shl     edx, 4
                mov     edi, eax
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 19h
                shr     edx, 7
                or      ecx, edx
                mov     edx, [esp+1Ch]
                xor     ebp, ecx
                mov     ecx, [esp+18h]
                mov     [esp+4Ch], ebp
                mov     ebp, [esp+20h]
                mov     edi, [esp+24h]
                or      ecx, ebp
                or      edx, edi
                and     eax, ecx
                and     ebx, edx
                mov     ecx, [esp+18h]
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                and     edi, edx
                or      eax, ebp
                or      ebx, edi
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                add     eax, ecx
                mov     ebp, [esp+40h]
                adc     ebx, edx
                mov     ecx, [esp+28h]
                mov     edx, [esp+2Ch]
                mov     edi, [esp+44h]
                add     ecx, ebp
                adc     edx, edi
                mov     [esp+28h], ecx
                mov     [esp+2Ch], edx
                add     ebp, eax
                adc     edi, ebx
                mov     [esp+8], ebp
                mov     [esp+0Ch], edi
                mov     eax, [esp+28h]
                mov     ebx, [esp+2Ch]
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 0Eh
                mov     ebp, eax
                shl     edx, 12h
                mov     edi, ebx
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+40h], ebp
                shr     ecx, 0Eh
                mov     ebp, ebx
                shl     edx, 12h
                mov     edi, eax
                shr     ebp, 12h
                or      ecx, edx
                shl     edi, 0Eh
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 17h
                shr     edx, 9
                or      ecx, edx
                mov     edx, [esp+34h]
                xor     ebp, ecx
                mov     ecx, [esp+30h]
                mov     [esp+44h], ebp
                mov     ebp, [esp+38h]
                mov     edi, [esp+3Ch]
                xor     ecx, ebp
                xor     edx, edi
                and     ecx, eax
                and     edx, ebx
                xor     ecx, ebp
                xor     edx, edi
                add     ecx, [esp+40h]
                mov     eax, [esp]
                adc     edx, [esp+44h]
                mov     ebx, [esp+4]
                add     ecx, eax
                mov     edi, [esp+50h]
                adc     edx, ebx
                mov     ebp, [esp+54h]
                shl     edi, 3
                add     edi, 7
                shl     edi, 3
                mov     eax, [edi+ebp]
                mov     ebx, [edi+ebp+4]
                add     ecx, eax
                mov     eax, [esi+edi]
                adc     edx, ebx
                mov     ebx, [esi+edi+4]
                add     ecx, eax
                mov     eax, [esp+8]
                adc     edx, ebx
                mov     ebx, [esp+0Ch]
                mov     [esp+40h], ecx
                mov     [esp+44h], edx
                mov     ecx, eax
                mov     edx, ebx
                shr     ecx, 1Ch
                mov     ebp, eax
                shl     edx, 4
                mov     edi, ebx
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, ebx
                xor     ebp, ecx
                mov     ecx, eax
                shr     edx, 7
                shl     ecx, 19h
                or      ecx, edx
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                mov     [esp+48h], ebp
                shr     ecx, 1Ch
                mov     ebp, ebx
                shl     edx, 4
                mov     edi, eax
                shl     ebp, 1Eh
                or      ecx, edx
                shr     edi, 2
                or      ebp, edi
                mov     edx, eax
                xor     ebp, ecx
                mov     ecx, ebx
                shl     ecx, 19h
                shr     edx, 7
                or      ecx, edx
                mov     edx, [esp+14h]
                xor     ebp, ecx
                mov     ecx, [esp+10h]
                mov     [esp+4Ch], ebp
                mov     ebp, [esp+18h]
                mov     edi, [esp+1Ch]
                or      ecx, ebp
                or      edx, edi
                and     eax, ecx
                and     ebx, edx
                mov     ecx, [esp+10h]
                mov     edx, [esp+14h]
                and     ebp, ecx
                and     edi, edx
                or      eax, ebp
                or      ebx, edi
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                add     eax, ecx
                mov     ebp, [esp+40h]
                adc     ebx, edx
                mov     ecx, [esp+20h]
                mov     edx, [esp+24h]
                mov     edi, [esp+44h]
                add     ecx, ebp
                adc     edx, edi
                mov     [esp+20h], ecx
                mov     [esp+24h], edx
                add     ebp, eax
                adc     edi, ebx
                mov     [esp], ebp
                mov     [esp+4], edi
                inc     dword ptr [esp+50h]
                cmp     dword ptr [esp+50h], 0Ah
                jnz     @@body_loop
                mov     edi, [esp+5Ch]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                add     [edi], eax
                adc     [edi+4], ebx
                add     [edi+8], ecx
                adc     [edi+0Ch], edx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                mov     edx, [esp+1Ch]
                add     [edi+10h], eax
                adc     [edi+14h], ebx
                add     [edi+18h], ecx
                adc     [edi+1Ch], edx
                mov     eax, [esp+20h]
                mov     ebx, [esp+24h]
                mov     ecx, [esp+28h]
                mov     edx, [esp+2Ch]
                add     [edi+20h], eax
                adc     [edi+24h], ebx
                add     [edi+28h], ecx
                adc     [edi+2Ch], edx
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     ecx, [esp+38h]
                mov     edx, [esp+3Ch]
                add     [edi+30h], eax
                adc     [edi+34h], ebx
                add     [edi+38h], ecx
                adc     [edi+3Ch], edx
                add     esp, 60h


    pop     ebp
    pop     edi
    pop     esi
    pop     ebx
  end;
end;
{$ENDIF}

{$IFDEF THashBaseHaval_asm}
procedure THashBaseHaval.DoTransform3(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THashBaseHaval.FDigest
                mov     esi, edx
                push    ebp
                mov     ebp, esp
                add     esp, 0FFFFFFD4h
                and     esp, 0FFFFFFC0h
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp+20h], esi
                mov     [esp+24h], edi
                mov     [esp+28h], ebp
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     ecx, [edi+18h]
                mov     edx, [edi+1Ch]
                mov     [esp+18h], ecx
                mov     [esp+1Ch], edx
                mov     eax, edx
                mov     ebp, [esp]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp+8]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+4]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+4]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+8]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+1Ch]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+0Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+18h]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+10h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+14h]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+14h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+10h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+18h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+0Ch]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+1Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp+8]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+20h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+4]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+24h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+28h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+1Ch]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+2Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+18h]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+30h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+14h]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+34h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+10h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+38h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+0Ch]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+3Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp+8]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+40h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+4]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+44h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+48h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+1Ch]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+4Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+18h]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+50h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+14h]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+54h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+10h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+58h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+0Ch]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+5Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp+8]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+60h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+4]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+64h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+68h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+1Ch]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+6Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+18h]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+70h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+14h]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+74h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+10h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+78h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+0Ch]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+7Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+4]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+14h]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp+452821E6h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+38h]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp+38D01377h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+68h]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-41AB9931h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+48h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+34E90C6Ch]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+2Ch]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-3F53D649h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+70h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-3683AF23h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+1Ch]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp+3F84D5B5h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+40h]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp-4AB8F6E9h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp-6DE92A27h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+5Ch]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-768604E5h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+50h]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-2ECEF45Ah]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+58h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-67204A54h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+4]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+2FFD72DBh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+28h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-2FE52049h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+10h]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp-471E5013h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+20h]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp+6A267E96h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+78h]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp-45836FBBh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+0Ch]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-0ED38067h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+54h]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+24A19947h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+24h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-4C6E9309h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+44h]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+801F2E2h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+60h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-7A7103EAh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+74h]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp+636920D8h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+18h]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp+71574E69h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+4Ch]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp-5BA7015Dh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+30h]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-0B6CC282h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+3Ch]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+0D95748Fh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+34h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+728EB658h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+8]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+718BCD58h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+64h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-7DEAB512h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+7Ch]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp+7B54A41Dh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+6Ch]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp-3DA5A64Bh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+4Ch]
                xor     edi, [esp+18h]
                and     ecx, [esp+8]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-63CF2AC7h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+24h]
                xor     edi, [esp+14h]
                and     ecx, [esp+4]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+2AF26013h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+10h]
                xor     edi, [esp+10h]
                and     ecx, [esp]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-3A2E4FDDh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+50h]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+1Ch]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+286085F0h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+70h]
                xor     edi, [esp+8]
                and     ecx, [esp+18h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-35BE86E8h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+44h]
                xor     edi, [esp+4]
                and     ecx, [esp+14h]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4724C711h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+20h]
                xor     edi, [esp]
                and     ecx, [esp+10h]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-71862350h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+58h]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+0Ch]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+603A180Eh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+74h]
                xor     edi, [esp+18h]
                and     ecx, [esp+8]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+6C9E0E8Bh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+38h]
                xor     edi, [esp+14h]
                and     ecx, [esp+4]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4FE175C2h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+64h]
                xor     edi, [esp+10h]
                and     ecx, [esp]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-28EA883Fh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+30h]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+1Ch]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-42CEB4D9h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+60h]
                xor     edi, [esp+8]
                and     ecx, [esp+18h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+78AF2FDAh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+78h]
                xor     edi, [esp+4]
                and     ecx, [esp+14h]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+55605C60h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+40h]
                xor     edi, [esp]
                and     ecx, [esp+10h]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-19AADA0Dh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+68h]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+0Ch]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-55AA546Ch]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+7Ch]
                xor     edi, [esp+18h]
                and     ecx, [esp+8]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+57489862h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+3Ch]
                xor     edi, [esp+14h]
                and     ecx, [esp+4]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+63E81440h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+1Ch]
                xor     edi, [esp+10h]
                and     ecx, [esp]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+55CA396Ah]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+0Ch]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+1Ch]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+2AAB10B6h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+4]
                xor     edi, [esp+8]
                and     ecx, [esp+18h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4B33A3CCh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi]
                xor     edi, [esp+4]
                and     ecx, [esp+14h]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+1141E8CEh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+48h]
                xor     edi, [esp]
                and     ecx, [esp+10h]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-5EAB7951h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+6Ch]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+0Ch]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+7C72E993h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+34h]
                xor     edi, [esp+18h]
                and     ecx, [esp+8]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4C11EBEFh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+18h]
                xor     edi, [esp+14h]
                and     ecx, [esp+4]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+636FBC2Ah]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+54h]
                xor     edi, [esp+10h]
                and     ecx, [esp]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+2BA9C55Dh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+28h]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+1Ch]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+741831F6h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+5Ch]
                xor     edi, [esp+8]
                and     ecx, [esp+18h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-31A3C1EAh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+2Ch]
                xor     edi, [esp+4]
                and     ecx, [esp+14h]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-64786CE2h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+14h]
                xor     edi, [esp]
                and     ecx, [esp+10h]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-502945CDh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+8]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+0Ch]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+6C24CF5Ch]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     edi, [esp+24h]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                add     [edi], eax
                add     [edi+4], ebx
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                add     [edi+8], ecx
                add     [edi+0Ch], edx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                add     [edi+10h], eax
                add     [edi+14h], ebx
                mov     ebp, [esp+28h]
                mov     ecx, [esp+18h]
                mov     edx, [esp+1Ch]
                mov     esp, ebp
                add     [edi+18h], ecx
                add     [edi+1Ch], edx
                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;

procedure THashBaseHaval.DoTransform4(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THashBaseHaval.FDigest
                mov     esi, edx
                push    ebp
                mov     ebp, esp
                add     esp, 0FFFFFFD4h
                and     esp, 0FFFFFFC0h
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp+20h], esi
                mov     [esp+24h], edi
                mov     [esp+28h], ebp
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     ecx, [edi+18h]
                mov     edx, [edi+1Ch]
                mov     [esp+18h], ecx
                mov     [esp+1Ch], edx
                mov     eax, edx
                mov     ebp, [esp+18h]
                mov     ebx, [esp+4]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+0Ch]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp+8]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+4]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+4]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+8]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+0Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+1Ch]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+10h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+18h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+14h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+14h]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+18h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+8]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+10h]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+1Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+4]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+0Ch]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+20h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp+8]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+24h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+4]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+28h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+2Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+1Ch]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+30h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+18h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+34h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+14h]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+38h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+8]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+10h]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+3Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+4]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+0Ch]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+40h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp+8]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+44h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+4]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+48h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+4Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+1Ch]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+50h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+18h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+54h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+14h]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+58h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+8]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+10h]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+5Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+4]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+0Ch]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+60h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp+8]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+64h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+4]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+68h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+6Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+1Ch]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+70h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+18h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+74h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+14h]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+78h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+8]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+10h]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+7Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+8]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+14h]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp+452821E6h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+38h]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp+38D01377h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+68h]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-41AB9931h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+48h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+34E90C6Ch]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+2Ch]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-3F53D649h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+70h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-3683AF23h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+1Ch]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp+3F84D5B5h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+40h]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp-4AB8F6E9h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp-6DE92A27h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+5Ch]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-768604E5h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+50h]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-2ECEF45Ah]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+58h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-67204A54h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+4]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+2FFD72DBh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+28h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-2FE52049h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+10h]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp-471E5013h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+20h]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp+6A267E96h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+78h]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp-45836FBBh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+0Ch]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-0ED38067h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+54h]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+24A19947h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+24h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-4C6E9309h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+44h]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+801F2E2h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+60h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-7A7103EAh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+74h]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp+636920D8h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+18h]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp+71574E69h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+4Ch]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp-5BA7015Dh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+30h]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-0B6CC282h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+3Ch]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+0D95748Fh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+34h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+728EB658h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+8]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+718BCD58h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+64h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-7DEAB512h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+7Ch]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp+7B54A41Dh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+6Ch]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp-3DA5A64Bh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+4Ch]
                xor     edi, [esp+4]
                and     ecx, [esp+0Ch]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-63CF2AC7h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+24h]
                xor     edi, [esp]
                and     ecx, [esp+8]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+2AF26013h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+18h]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+10h]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+4]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-3A2E4FDDh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+50h]
                xor     edi, [esp+18h]
                and     ecx, [esp]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+286085F0h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+70h]
                xor     edi, [esp+14h]
                and     ecx, [esp+1Ch]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-35BE86E8h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+44h]
                xor     edi, [esp+10h]
                and     ecx, [esp+18h]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4724C711h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+8]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+20h]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+14h]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-71862350h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+4]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+58h]
                xor     edi, [esp+8]
                and     ecx, [esp+10h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+603A180Eh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+74h]
                xor     edi, [esp+4]
                and     ecx, [esp+0Ch]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+6C9E0E8Bh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+38h]
                xor     edi, [esp]
                and     ecx, [esp+8]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4FE175C2h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+18h]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+64h]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+4]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-28EA883Fh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+30h]
                xor     edi, [esp+18h]
                and     ecx, [esp]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-42CEB4D9h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+60h]
                xor     edi, [esp+14h]
                and     ecx, [esp+1Ch]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+78AF2FDAh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+78h]
                xor     edi, [esp+10h]
                and     ecx, [esp+18h]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+55605C60h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+8]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+40h]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+14h]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-19AADA0Dh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+4]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+68h]
                xor     edi, [esp+8]
                and     ecx, [esp+10h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-55AA546Ch]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+7Ch]
                xor     edi, [esp+4]
                and     ecx, [esp+0Ch]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+57489862h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+3Ch]
                xor     edi, [esp]
                and     ecx, [esp+8]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+63E81440h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+18h]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+1Ch]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+4]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+55CA396Ah]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+0Ch]
                xor     edi, [esp+18h]
                and     ecx, [esp]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+2AAB10B6h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+4]
                xor     edi, [esp+14h]
                and     ecx, [esp+1Ch]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4B33A3CCh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi]
                xor     edi, [esp+10h]
                and     ecx, [esp+18h]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+1141E8CEh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+8]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+48h]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+14h]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-5EAB7951h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+4]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+6Ch]
                xor     edi, [esp+8]
                and     ecx, [esp+10h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+7C72E993h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+34h]
                xor     edi, [esp+4]
                and     ecx, [esp+0Ch]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4C11EBEFh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+18h]
                xor     edi, [esp]
                and     ecx, [esp+8]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+636FBC2Ah]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+18h]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+54h]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+4]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+2BA9C55Dh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+28h]
                xor     edi, [esp+18h]
                and     ecx, [esp]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+741831F6h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+5Ch]
                xor     edi, [esp+14h]
                and     ecx, [esp+1Ch]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-31A3C1EAh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+2Ch]
                xor     edi, [esp+10h]
                and     ecx, [esp+18h]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-64786CE2h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+8]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+14h]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+14h]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-502945CDh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+4]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+8]
                xor     edi, [esp+8]
                and     ecx, [esp+10h]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+6C24CF5Ch]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+8]
                mov     ecx, [esp+10h]
                mov     edx, [esp+18h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+14h]
                xor     ebp, [esp+4]
                xor     ebx, edx
                xor     ebp, [esp+0Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp]
                and     ebp, [esp+4]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+60h]
                and     ebp, [esp+14h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+7A325381h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+4]
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+14h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+10h]
                xor     ebp, [esp]
                xor     ebx, edx
                xor     ebp, [esp+8]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+1Ch]
                and     ebp, [esp]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+10h]
                and     ebp, [esp+10h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+28958677h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp]
                mov     ecx, [esp+8]
                mov     edx, [esp+10h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+0Ch]
                xor     ebp, [esp+1Ch]
                xor     ebx, edx
                xor     ebp, [esp+4]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+18h]
                and     ebp, [esp+1Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi]
                and     ebp, [esp+0Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+3B8F4898h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+1Ch]
                mov     ecx, [esp+4]
                mov     edx, [esp+0Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+8]
                xor     ebp, [esp+18h]
                xor     ebx, edx
                xor     ebp, [esp]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+14h]
                and     ebp, [esp+18h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+38h]
                and     ebp, [esp+8]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+6B4BB9AFh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+18h]
                mov     ecx, [esp]
                mov     edx, [esp+8]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+4]
                xor     ebp, [esp+14h]
                xor     ebx, edx
                xor     ebp, [esp+1Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+10h]
                and     ebp, [esp+14h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+8]
                and     ebp, [esp+4]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-3B4017E5h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+14h]
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+4]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp]
                xor     ebp, [esp+10h]
                xor     ebx, edx
                xor     ebp, [esp+18h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+0Ch]
                and     ebp, [esp+10h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+1Ch]
                and     ebp, [esp]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+66282193h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+10h]
                mov     ecx, [esp+18h]
                mov     edx, [esp]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+1Ch]
                xor     ebp, [esp+0Ch]
                xor     ebx, edx
                xor     ebp, [esp+14h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+8]
                and     ebp, [esp+0Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+70h]
                and     ebp, [esp+1Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+61D809CCh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+0Ch]
                mov     ecx, [esp+14h]
                mov     edx, [esp+1Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+18h]
                xor     ebp, [esp+8]
                xor     ebx, edx
                xor     ebp, [esp+10h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+4]
                and     ebp, [esp+8]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+5Ch]
                and     ebp, [esp+18h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-4DE566Fh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+8]
                mov     ecx, [esp+10h]
                mov     edx, [esp+18h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+14h]
                xor     ebp, [esp+4]
                xor     ebx, edx
                xor     ebp, [esp+0Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp]
                and     ebp, [esp+4]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+68h]
                and     ebp, [esp+14h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+487CAC60h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+4]
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+14h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+10h]
                xor     ebp, [esp]
                xor     ebx, edx
                xor     ebp, [esp+8]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+1Ch]
                and     ebp, [esp]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+18h]
                and     ebp, [esp+10h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+5DEC8032h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp]
                mov     ecx, [esp+8]
                mov     edx, [esp+10h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+0Ch]
                xor     ebp, [esp+1Ch]
                xor     ebx, edx
                xor     ebp, [esp+4]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+18h]
                and     ebp, [esp+1Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+78h]
                and     ebp, [esp+0Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-107BA2A3h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+1Ch]
                mov     ecx, [esp+4]
                mov     edx, [esp+0Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+8]
                xor     ebp, [esp+18h]
                xor     ebx, edx
                xor     ebp, [esp]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+14h]
                and     ebp, [esp+18h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+50h]
                and     ebp, [esp+8]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-167A8A4Fh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+18h]
                mov     ecx, [esp]
                mov     edx, [esp+8]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+4]
                xor     ebp, [esp+14h]
                xor     ebx, edx
                xor     ebp, [esp+1Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+10h]
                and     ebp, [esp+14h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+48h]
                and     ebp, [esp+4]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-23D9DCFEh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+14h]
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+4]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp]
                xor     ebp, [esp+10h]
                xor     ebx, edx
                xor     ebp, [esp+18h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+0Ch]
                and     ebp, [esp+10h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+64h]
                and     ebp, [esp]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-149AE478h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+10h]
                mov     ecx, [esp+18h]
                mov     edx, [esp]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+1Ch]
                xor     ebp, [esp+0Ch]
                xor     ebx, edx
                xor     ebp, [esp+14h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+8]
                and     ebp, [esp+0Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+4Ch]
                and     ebp, [esp+1Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+23893E81h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+0Ch]
                mov     ecx, [esp+14h]
                mov     edx, [esp+1Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+18h]
                xor     ebp, [esp+8]
                xor     ebx, edx
                xor     ebp, [esp+10h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+4]
                and     ebp, [esp+8]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+0Ch]
                and     ebp, [esp+18h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-2C69533Bh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+8]
                mov     ecx, [esp+10h]
                mov     edx, [esp+18h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+14h]
                xor     ebp, [esp+4]
                xor     ebx, edx
                xor     ebp, [esp+0Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp]
                and     ebp, [esp+4]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+58h]
                and     ebp, [esp+14h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+0F6D6FF3h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+4]
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+14h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+10h]
                xor     ebp, [esp]
                xor     ebx, edx
                xor     ebp, [esp+8]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+1Ch]
                and     ebp, [esp]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+2Ch]
                and     ebp, [esp+10h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-7C0BBDC7h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp]
                mov     ecx, [esp+8]
                mov     edx, [esp+10h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+0Ch]
                xor     ebp, [esp+1Ch]
                xor     ebx, edx
                xor     ebp, [esp+4]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+18h]
                and     ebp, [esp+1Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+7Ch]
                and     ebp, [esp+0Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+2E0B4482h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+1Ch]
                mov     ecx, [esp+4]
                mov     edx, [esp+0Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+8]
                xor     ebp, [esp+18h]
                xor     ebx, edx
                xor     ebp, [esp]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+14h]
                and     ebp, [esp+18h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+54h]
                and     ebp, [esp+8]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-5B7BDFFCh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+18h]
                mov     ecx, [esp]
                mov     edx, [esp+8]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+4]
                xor     ebp, [esp+14h]
                xor     ebx, edx
                xor     ebp, [esp+1Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+10h]
                and     ebp, [esp+14h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+20h]
                and     ebp, [esp+4]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+69C8F04Ah]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+14h]
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+4]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp]
                xor     ebp, [esp+10h]
                xor     ebx, edx
                xor     ebp, [esp+18h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+0Ch]
                and     ebp, [esp+10h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+6Ch]
                and     ebp, [esp]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-61E064A2h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+10h]
                mov     ecx, [esp+18h]
                mov     edx, [esp]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+1Ch]
                xor     ebp, [esp+0Ch]
                xor     ebx, edx
                xor     ebp, [esp+14h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+8]
                and     ebp, [esp+0Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+30h]
                and     ebp, [esp+1Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+21C66842h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+0Ch]
                mov     ecx, [esp+14h]
                mov     edx, [esp+1Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+18h]
                xor     ebp, [esp+8]
                xor     ebx, edx
                xor     ebp, [esp+10h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+4]
                and     ebp, [esp+8]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+24h]
                and     ebp, [esp+18h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-9169366h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+8]
                mov     ecx, [esp+10h]
                mov     edx, [esp+18h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+14h]
                xor     ebp, [esp+4]
                xor     ebx, edx
                xor     ebp, [esp+0Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp]
                and     ebp, [esp+4]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+4]
                and     ebp, [esp+14h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+670C9C61h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+4]
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+14h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+10h]
                xor     ebp, [esp]
                xor     ebx, edx
                xor     ebp, [esp+8]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+1Ch]
                and     ebp, [esp]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+74h]
                and     ebp, [esp+10h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-542C7710h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp]
                mov     ecx, [esp+8]
                mov     edx, [esp+10h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+0Ch]
                xor     ebp, [esp+1Ch]
                xor     ebx, edx
                xor     ebp, [esp+4]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+18h]
                and     ebp, [esp+1Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+14h]
                and     ebp, [esp+0Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+6A51A0D2h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+1Ch]
                mov     ecx, [esp+4]
                mov     edx, [esp+0Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+8]
                xor     ebp, [esp+18h]
                xor     ebx, edx
                xor     ebp, [esp]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+14h]
                and     ebp, [esp+18h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+3Ch]
                and     ebp, [esp+8]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-27ABD098h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+18h]
                mov     ecx, [esp]
                mov     edx, [esp+8]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+4]
                xor     ebp, [esp+14h]
                xor     ebx, edx
                xor     ebp, [esp+1Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+10h]
                and     ebp, [esp+14h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+44h]
                and     ebp, [esp+4]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-69F058D8h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+14h]
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+4]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp]
                xor     ebp, [esp+10h]
                xor     ebx, edx
                xor     ebp, [esp+18h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+0Ch]
                and     ebp, [esp+10h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+28h]
                and     ebp, [esp]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-54AECC5Dh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+10h]
                mov     ecx, [esp+18h]
                mov     edx, [esp]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+1Ch]
                xor     ebp, [esp+0Ch]
                xor     ebx, edx
                xor     ebp, [esp+14h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+8]
                and     ebp, [esp+0Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+40h]
                and     ebp, [esp+1Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+6EEF0B6Ch]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+0Ch]
                mov     ecx, [esp+14h]
                mov     edx, [esp+1Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+18h]
                xor     ebp, [esp+8]
                xor     ebx, edx
                xor     ebp, [esp+10h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+4]
                and     ebp, [esp+8]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+34h]
                and     ebp, [esp+18h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+137A3BE4h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     edi, [esp+24h]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                add     [edi], eax
                add     [edi+4], ebx
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                add     [edi+8], ecx
                add     [edi+0Ch], edx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                add     [edi+10h], eax
                add     [edi+14h], ebx
                mov     ebp, [esp+28h]
                mov     ecx, [esp+18h]
                mov     edx, [esp+1Ch]
                mov     esp, ebp
                add     [edi+18h], ecx
                add     [edi+1Ch], edx
                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;

procedure THashBaseHaval.DoTransform5(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THashBaseHaval.FDigest
                mov     esi, edx
                push    ebp
                mov     ebp, esp
                add     esp, 0FFFFFFD4h
                and     esp, 0FFFFFFC0h
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp+20h], esi
                mov     [esp+24h], edi
                mov     [esp+28h], ebp
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     ecx, [edi+18h]
                mov     edx, [edi+1Ch]
                mov     [esp+18h], ecx
                mov     [esp+1Ch], edx
                mov     eax, edx
                mov     ebp, [esp+10h]
                mov     ebx, [esp+4]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+8]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+4]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+4]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+8]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+1Ch]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+0Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp+18h]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+10h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+14h]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+14h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+10h]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+18h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp+8]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+0Ch]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+1Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+4]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+8]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+20h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+4]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+24h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+28h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+1Ch]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+2Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp+18h]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+30h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+14h]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+34h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+10h]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+38h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp+8]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+0Ch]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+3Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+4]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+8]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+40h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+4]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+44h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+48h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+1Ch]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+4Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp+18h]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+50h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+14h]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+54h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+10h]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+58h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp+8]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+0Ch]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+5Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+4]
                mov     ecx, [esp+18h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ebx, [esp+8]
                and     edi, [esp]
                xor     ecx, ebx
                and     ebp, [esp+14h]
                xor     edi, ecx
                mov     edx, [esi+60h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp]
                mov     ecx, [esp+14h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+8]
                and     ebx, [esp+4]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                and     ebp, [esp+10h]
                xor     edi, ecx
                mov     edx, [esi+64h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+10h]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+4]
                and     ebx, [esp]
                and     edi, [esp+18h]
                xor     ecx, ebx
                and     ebp, [esp+0Ch]
                xor     edi, ecx
                mov     edx, [esi+68h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp]
                and     ebx, [esp+1Ch]
                and     edi, [esp+14h]
                xor     ecx, ebx
                and     ebp, [esp+8]
                xor     edi, ecx
                mov     edx, [esi+6Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+8]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ebx, [esp+18h]
                and     edi, [esp+10h]
                xor     ecx, ebx
                and     ebp, [esp+4]
                xor     edi, ecx
                mov     edx, [esi+70h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+4]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+18h]
                and     ebx, [esp+14h]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                and     ebp, [esp]
                xor     edi, ecx
                mov     edx, [esi+74h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+14h]
                and     ebx, [esp+10h]
                and     edi, [esp+8]
                xor     ecx, ebx
                and     ebp, [esp+1Ch]
                xor     edi, ecx
                mov     edx, [esi+78h]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp+8]
                mov     ecx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebx, ecx
                mov     edi, [esp+10h]
                and     ebx, [esp+0Ch]
                and     edi, [esp+4]
                xor     ecx, ebx
                and     ebp, [esp+18h]
                xor     edi, ecx
                mov     edx, [esi+7Ch]
                xor     ebp, edi
                add     eax, edx
                ror     ebp, 7
                add     ebp, eax
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+4]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+14h]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp+452821E6h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+38h]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp+38D01377h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+68h]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-41AB9931h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+48h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+34E90C6Ch]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+2Ch]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-3F53D649h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+70h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-3683AF23h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+1Ch]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp+3F84D5B5h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+40h]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp-4AB8F6E9h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp-6DE92A27h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+5Ch]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-768604E5h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+50h]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-2ECEF45Ah]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+58h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-67204A54h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+4]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+2FFD72DBh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+28h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-2FE52049h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+10h]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp-471E5013h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+20h]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp+6A267E96h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+78h]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp-45836FBBh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+0Ch]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-0ED38067h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+54h]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+24A19947h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+24h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp-4C6E9309h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+44h]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+801F2E2h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+60h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-7A7103EAh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+74h]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp+636920D8h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+18h]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp+71574E69h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+4]
                mov     edi, [esp+8]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+10h]
                and     ebx, edi
                mov     edx, [esp+14h]
                and     ebp, ecx
                xor     ebx, [esp+18h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+4]
                and     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+4Ch]
                xor     ecx, ebx
                and     edi, [esp]
                xor     ecx, edi
                lea     ebp, [eax+ebp-5BA7015Dh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp]
                mov     edi, [esp+4]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+0Ch]
                and     ebx, edi
                mov     edx, [esp+10h]
                and     ebp, ecx
                xor     ebx, [esp+14h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp]
                and     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+30h]
                xor     ecx, ebx
                and     edi, [esp+1Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-0B6CC282h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+1Ch]
                mov     edi, [esp]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+8]
                and     ebx, edi
                mov     edx, [esp+0Ch]
                and     ebp, ecx
                xor     ebx, [esp+10h]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+1Ch]
                and     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+3Ch]
                xor     ecx, ebx
                and     edi, [esp+18h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+0D95748Fh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp+18h]
                mov     edi, [esp+1Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+4]
                and     ebx, edi
                mov     edx, [esp+8]
                and     ebp, ecx
                xor     ebx, [esp+0Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+18h]
                and     ebx, [esp]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+34h]
                xor     ecx, ebx
                and     edi, [esp+14h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+728EB658h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+14h]
                mov     edi, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp]
                and     ebx, edi
                mov     edx, [esp+4]
                and     ebp, ecx
                xor     ebx, [esp+8]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+14h]
                and     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+8]
                xor     ecx, ebx
                and     edi, [esp+10h]
                xor     ecx, edi
                lea     ebp, [eax+ebp+718BCD58h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+10h]
                mov     edi, [esp+14h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+1Ch]
                and     ebx, edi
                mov     edx, [esp]
                and     ebp, ecx
                xor     ebx, [esp+4]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+10h]
                and     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+64h]
                xor     ecx, ebx
                and     edi, [esp+0Ch]
                xor     ecx, edi
                lea     ebp, [eax+ebp-7DEAB512h]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+0Ch]
                mov     edi, [esp+10h]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+18h]
                and     ebx, edi
                mov     edx, [esp+1Ch]
                and     ebp, ecx
                xor     ebx, [esp]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+0Ch]
                and     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+7Ch]
                xor     ecx, ebx
                and     edi, [esp+8]
                xor     ecx, edi
                lea     ebp, [eax+ebp+7B54A41Dh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+8]
                mov     edi, [esp+0Ch]
                xor     ebp, 0FFFFFFFFh
                mov     ecx, [esp+14h]
                and     ebx, edi
                mov     edx, [esp+18h]
                and     ebp, ecx
                xor     ebx, [esp+1Ch]
                xor     ebp, edx
                xor     ecx, edi
                xor     ebx, ebp
                and     ecx, [esp+8]
                and     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ecx, edx
                mov     ebp, [esi+6Ch]
                xor     ecx, ebx
                and     edi, [esp+4]
                xor     ecx, edi
                lea     ebp, [eax+ebp-3DA5A64Bh]
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+4Ch]
                xor     edi, [esp+8]
                and     ecx, [esp]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-63CF2AC7h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+8]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+24h]
                xor     edi, [esp+4]
                and     ecx, [esp+1Ch]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+2AF26013h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+4]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+10h]
                xor     edi, [esp]
                and     ecx, [esp+18h]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-3A2E4FDDh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+50h]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+14h]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+286085F0h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+70h]
                xor     edi, [esp+18h]
                and     ecx, [esp+10h]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-35BE86E8h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+44h]
                xor     edi, [esp+14h]
                and     ecx, [esp+0Ch]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4724C711h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+20h]
                xor     edi, [esp+10h]
                and     ecx, [esp+8]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-71862350h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+58h]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+4]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+603A180Eh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+74h]
                xor     edi, [esp+8]
                and     ecx, [esp]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+6C9E0E8Bh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+8]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+38h]
                xor     edi, [esp+4]
                and     ecx, [esp+1Ch]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4FE175C2h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+4]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+64h]
                xor     edi, [esp]
                and     ecx, [esp+18h]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-28EA883Fh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+30h]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+14h]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-42CEB4D9h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+60h]
                xor     edi, [esp+18h]
                and     ecx, [esp+10h]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+78AF2FDAh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+78h]
                xor     edi, [esp+14h]
                and     ecx, [esp+0Ch]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+55605C60h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+40h]
                xor     edi, [esp+10h]
                and     ecx, [esp+8]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-19AADA0Dh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+68h]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+4]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-55AA546Ch]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+7Ch]
                xor     edi, [esp+8]
                and     ecx, [esp]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+57489862h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+8]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+3Ch]
                xor     edi, [esp+4]
                and     ecx, [esp+1Ch]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+63E81440h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+4]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+1Ch]
                xor     edi, [esp]
                and     ecx, [esp+18h]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+55CA396Ah]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+0Ch]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+14h]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+2AAB10B6h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+4]
                xor     edi, [esp+18h]
                and     ecx, [esp+10h]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4B33A3CCh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi]
                xor     edi, [esp+14h]
                and     ecx, [esp+0Ch]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+1141E8CEh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+48h]
                xor     edi, [esp+10h]
                and     ecx, [esp+8]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-5EAB7951h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+6Ch]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+4]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+7C72E993h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp+14h]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, [esp+18h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+34h]
                xor     edi, [esp+8]
                and     ecx, [esp]
                and     edi, [esp+10h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-4C11EBEFh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebp, [esp+10h]
                mov     ebx, [esp+8]
                mov     ecx, [esp]
                mov     edi, ebx
                and     ebx, [esp+14h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+18h]
                xor     edi, [esp+4]
                and     ecx, [esp+1Ch]
                and     edi, [esp+0Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+636FBC2Ah]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebp, [esp+0Ch]
                mov     ebx, [esp+4]
                mov     ecx, [esp+1Ch]
                mov     edi, ebx
                and     ebx, [esp+10h]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+54h]
                xor     edi, [esp]
                and     ecx, [esp+18h]
                and     edi, [esp+8]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+2BA9C55Dh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebp, [esp+8]
                mov     ebx, [esp]
                mov     ecx, [esp+18h]
                mov     edi, ebx
                and     ebx, [esp+0Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+28h]
                xor     edi, [esp+1Ch]
                and     ecx, [esp+14h]
                and     edi, [esp+4]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+741831F6h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebp, [esp+4]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+14h]
                mov     edi, ebx
                and     ebx, [esp+8]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+5Ch]
                xor     edi, [esp+18h]
                and     ecx, [esp+10h]
                and     edi, [esp]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-31A3C1EAh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebp, [esp]
                mov     ebx, [esp+18h]
                mov     ecx, [esp+10h]
                mov     edi, ebx
                and     ebx, [esp+4]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+2Ch]
                xor     edi, [esp+14h]
                and     ecx, [esp+0Ch]
                and     edi, [esp+1Ch]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-64786CE2h]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebp, [esp+1Ch]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+0Ch]
                mov     edi, ebx
                and     ebx, [esp]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+14h]
                xor     edi, [esp+10h]
                and     ecx, [esp+8]
                and     edi, [esp+18h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp-502945CDh]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebp, [esp+18h]
                mov     ebx, [esp+10h]
                mov     ecx, [esp+8]
                mov     edi, ebx
                and     ebx, [esp+1Ch]
                and     edi, ecx
                xor     ebx, ebp
                ror     eax, 0Bh
                xor     edi, ebp
                mov     ebp, [esi+8]
                xor     edi, [esp+0Ch]
                and     ecx, [esp+4]
                and     edi, [esp+14h]
                xor     ecx, ebx
                lea     ebp, [eax+ebp+6C24CF5Ch]
                xor     ecx, edi
                ror     ecx, 7
                add     ebp, ecx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebp, [esp]
                mov     ecx, [esp+14h]
                mov     edx, [esp+4]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+8]
                xor     ebp, [esp+10h]
                xor     ebx, edx
                xor     ebp, [esp+18h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+0Ch]
                and     ebp, [esp+10h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+60h]
                and     ebp, [esp+8]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+7A325381h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ecx, [esp+10h]
                mov     edx, [esp]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+4]
                xor     ebp, [esp+0Ch]
                xor     ebx, edx
                xor     ebp, [esp+14h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+8]
                and     ebp, [esp+0Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+10h]
                and     ebp, [esp+4]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+28958677h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+1Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp]
                xor     ebp, [esp+8]
                xor     ebx, edx
                xor     ebp, [esp+10h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+4]
                and     ebp, [esp+8]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi]
                and     ebp, [esp]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+3B8F4898h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ecx, [esp+8]
                mov     edx, [esp+18h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+1Ch]
                xor     ebp, [esp+4]
                xor     ebx, edx
                xor     ebp, [esp+0Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp]
                and     ebp, [esp+4]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+38h]
                and     ebp, [esp+1Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+6B4BB9AFh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ecx, [esp+4]
                mov     edx, [esp+14h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+18h]
                xor     ebp, [esp]
                xor     ebx, edx
                xor     ebp, [esp+8]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+1Ch]
                and     ebp, [esp]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+8]
                and     ebp, [esp+18h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-3B4017E5h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ecx, [esp]
                mov     edx, [esp+10h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+14h]
                xor     ebp, [esp+1Ch]
                xor     ebx, edx
                xor     ebp, [esp+4]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+18h]
                and     ebp, [esp+1Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+1Ch]
                and     ebp, [esp+14h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+66282193h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+0Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+10h]
                xor     ebp, [esp+18h]
                xor     ebx, edx
                xor     ebp, [esp]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+14h]
                and     ebp, [esp+18h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+70h]
                and     ebp, [esp+10h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+61D809CCh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ecx, [esp+18h]
                mov     edx, [esp+8]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+0Ch]
                xor     ebp, [esp+14h]
                xor     ebx, edx
                xor     ebp, [esp+1Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+10h]
                and     ebp, [esp+14h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+5Ch]
                and     ebp, [esp+0Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-4DE566Fh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ecx, [esp+14h]
                mov     edx, [esp+4]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+8]
                xor     ebp, [esp+10h]
                xor     ebx, edx
                xor     ebp, [esp+18h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+0Ch]
                and     ebp, [esp+10h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+68h]
                and     ebp, [esp+8]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+487CAC60h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ecx, [esp+10h]
                mov     edx, [esp]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+4]
                xor     ebp, [esp+0Ch]
                xor     ebx, edx
                xor     ebp, [esp+14h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+8]
                and     ebp, [esp+0Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+18h]
                and     ebp, [esp+4]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+5DEC8032h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+1Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp]
                xor     ebp, [esp+8]
                xor     ebx, edx
                xor     ebp, [esp+10h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+4]
                and     ebp, [esp+8]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+78h]
                and     ebp, [esp]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-107BA2A3h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ecx, [esp+8]
                mov     edx, [esp+18h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+1Ch]
                xor     ebp, [esp+4]
                xor     ebx, edx
                xor     ebp, [esp+0Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp]
                and     ebp, [esp+4]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+50h]
                and     ebp, [esp+1Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-167A8A4Fh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ecx, [esp+4]
                mov     edx, [esp+14h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+18h]
                xor     ebp, [esp]
                xor     ebx, edx
                xor     ebp, [esp+8]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+1Ch]
                and     ebp, [esp]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+48h]
                and     ebp, [esp+18h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-23D9DCFEh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ecx, [esp]
                mov     edx, [esp+10h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+14h]
                xor     ebp, [esp+1Ch]
                xor     ebx, edx
                xor     ebp, [esp+4]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+18h]
                and     ebp, [esp+1Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+64h]
                and     ebp, [esp+14h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-149AE478h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+0Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+10h]
                xor     ebp, [esp+18h]
                xor     ebx, edx
                xor     ebp, [esp]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+14h]
                and     ebp, [esp+18h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+4Ch]
                and     ebp, [esp+10h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+23893E81h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ecx, [esp+18h]
                mov     edx, [esp+8]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+0Ch]
                xor     ebp, [esp+14h]
                xor     ebx, edx
                xor     ebp, [esp+1Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+10h]
                and     ebp, [esp+14h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+0Ch]
                and     ebp, [esp+0Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-2C69533Bh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ecx, [esp+14h]
                mov     edx, [esp+4]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+8]
                xor     ebp, [esp+10h]
                xor     ebx, edx
                xor     ebp, [esp+18h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+0Ch]
                and     ebp, [esp+10h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+58h]
                and     ebp, [esp+8]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+0F6D6FF3h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ecx, [esp+10h]
                mov     edx, [esp]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+4]
                xor     ebp, [esp+0Ch]
                xor     ebx, edx
                xor     ebp, [esp+14h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+8]
                and     ebp, [esp+0Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+2Ch]
                and     ebp, [esp+4]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-7C0BBDC7h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+1Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp]
                xor     ebp, [esp+8]
                xor     ebx, edx
                xor     ebp, [esp+10h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+4]
                and     ebp, [esp+8]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+7Ch]
                and     ebp, [esp]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+2E0B4482h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ecx, [esp+8]
                mov     edx, [esp+18h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+1Ch]
                xor     ebp, [esp+4]
                xor     ebx, edx
                xor     ebp, [esp+0Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp]
                and     ebp, [esp+4]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+54h]
                and     ebp, [esp+1Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-5B7BDFFCh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ecx, [esp+4]
                mov     edx, [esp+14h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+18h]
                xor     ebp, [esp]
                xor     ebx, edx
                xor     ebp, [esp+8]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+1Ch]
                and     ebp, [esp]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+20h]
                and     ebp, [esp+18h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+69C8F04Ah]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ecx, [esp]
                mov     edx, [esp+10h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+14h]
                xor     ebp, [esp+1Ch]
                xor     ebx, edx
                xor     ebp, [esp+4]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+18h]
                and     ebp, [esp+1Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+6Ch]
                and     ebp, [esp+14h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-61E064A2h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+0Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+10h]
                xor     ebp, [esp+18h]
                xor     ebx, edx
                xor     ebp, [esp]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+14h]
                and     ebp, [esp+18h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+30h]
                and     ebp, [esp+10h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+21C66842h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ecx, [esp+18h]
                mov     edx, [esp+8]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+0Ch]
                xor     ebp, [esp+14h]
                xor     ebx, edx
                xor     ebp, [esp+1Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+10h]
                and     ebp, [esp+14h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+24h]
                and     ebp, [esp+0Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-9169366h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ecx, [esp+14h]
                mov     edx, [esp+4]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+8]
                xor     ebp, [esp+10h]
                xor     ebx, edx
                xor     ebp, [esp+18h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+0Ch]
                and     ebp, [esp+10h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+18h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+4]
                and     ebp, [esp+8]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+670C9C61h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ecx, [esp+10h]
                mov     edx, [esp]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+4]
                xor     ebp, [esp+0Ch]
                xor     ebx, edx
                xor     ebp, [esp+14h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+8]
                and     ebp, [esp+0Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+14h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+74h]
                and     ebp, [esp+4]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-542C7710h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+1Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp]
                xor     ebp, [esp+8]
                xor     ebx, edx
                xor     ebp, [esp+10h]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+4]
                and     ebp, [esp+8]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+10h]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+14h]
                and     ebp, [esp]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+6A51A0D2h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ecx, [esp+8]
                mov     edx, [esp+18h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+1Ch]
                xor     ebp, [esp+4]
                xor     ebx, edx
                xor     ebp, [esp+0Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp]
                and     ebp, [esp+4]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+0Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+3Ch]
                and     ebp, [esp+1Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-27ABD098h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ecx, [esp+4]
                mov     edx, [esp+14h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+18h]
                xor     ebp, [esp]
                xor     ebx, edx
                xor     ebp, [esp+8]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+1Ch]
                and     ebp, [esp]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+8]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+44h]
                and     ebp, [esp+18h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-69F058D8h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ecx, [esp]
                mov     edx, [esp+10h]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+14h]
                xor     ebp, [esp+1Ch]
                xor     ebx, edx
                xor     ebp, [esp+4]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+18h]
                and     ebp, [esp+1Ch]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+4]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+28h]
                and     ebp, [esp+14h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx-54AECC5Dh]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+0Ch]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+10h]
                xor     ebp, [esp+18h]
                xor     ebx, edx
                xor     ebp, [esp]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+14h]
                and     ebp, [esp+18h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+40h]
                and     ebp, [esp+10h]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+6EEF0B6Ch]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ecx, [esp+18h]
                mov     edx, [esp+8]
                mov     edi, ebp
                mov     ebx, edx
                xor     ebp, 0FFFFFFFFh
                xor     ebx, 0FFFFFFFFh
                and     ebp, ecx
                and     ebx, [esp+0Ch]
                xor     ebp, [esp+14h]
                xor     ebx, edx
                xor     ebp, [esp+1Ch]
                xor     ebx, ebp
                mov     ebp, edi
                and     ebx, [esp+10h]
                and     ebp, [esp+14h]
                and     edi, edx
                xor     ebp, ecx
                xor     ebx, [esp+1Ch]
                ror     eax, 0Bh
                xor     ebp, edx
                mov     edx, [esi+34h]
                and     ebp, [esp+0Ch]
                xor     ebx, edi
                xor     ebp, ebx
                lea     edx, [eax+edx+137A3BE4h]
                ror     ebp, 7
                add     ebp, edx
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                nop
                nop
                nop
                nop
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                and     ebp, ebx
                mov     edx, [esp+14h]
                and     ebx, ecx
                mov     edi, [esp+18h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+8]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+6Ch]
                and     ebx, [esp+4]
                xor     ebp, ecx
                lea     edi, [eax+edi-45C40FB0h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                and     ebp, ebx
                mov     edx, [esp+10h]
                and     ebx, ecx
                mov     edi, [esp+14h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+4]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+0Ch]
                and     ebx, [esp]
                xor     ebp, ecx
                lea     edi, [eax+edi+7EFB2A98h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                and     ebp, ebx
                mov     edx, [esp+0Ch]
                and     ebx, ecx
                mov     edi, [esp+10h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+54h]
                and     ebx, [esp+1Ch]
                xor     ebp, ecx
                lea     edi, [eax+edi-5E0E9AE3h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                and     ebp, ebx
                mov     edx, [esp+8]
                and     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+1Ch]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+68h]
                and     ebx, [esp+18h]
                xor     ebp, ecx
                lea     edi, [eax+edi+39AF0176h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                and     ebp, ebx
                mov     edx, [esp+4]
                and     ebx, ecx
                mov     edi, [esp+8]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+18h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+44h]
                and     ebx, [esp+14h]
                xor     ebp, ecx
                lea     edi, [eax+edi+66CA593Eh]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                and     ebp, ebx
                mov     edx, [esp]
                and     ebx, ecx
                mov     edi, [esp+4]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+14h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+2Ch]
                and     ebx, [esp+10h]
                xor     ebp, ecx
                lea     edi, [eax+edi-7DBCF178h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                and     ebp, ebx
                mov     edx, [esp+1Ch]
                and     ebx, ecx
                mov     edi, [esp]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+10h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+50h]
                and     ebx, [esp+0Ch]
                xor     ebp, ecx
                lea     edi, [eax+edi-731179E7h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                and     ebp, ebx
                mov     edx, [esp+18h]
                and     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+0Ch]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+74h]
                and     ebx, [esp+8]
                xor     ebp, ecx
                lea     edi, [eax+edi+456F9FB4h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                and     ebp, ebx
                mov     edx, [esp+14h]
                and     ebx, ecx
                mov     edi, [esp+18h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+8]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+4Ch]
                and     ebx, [esp+4]
                xor     ebp, ecx
                lea     edi, [eax+edi+7D84A5C3h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                and     ebp, ebx
                mov     edx, [esp+10h]
                and     ebx, ecx
                mov     edi, [esp+14h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+4]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi]
                and     ebx, [esp]
                xor     ebp, ecx
                lea     edi, [eax+edi+3B8B5EBEh]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                and     ebp, ebx
                mov     edx, [esp+0Ch]
                and     ebx, ecx
                mov     edi, [esp+10h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+30h]
                and     ebx, [esp+1Ch]
                xor     ebp, ecx
                lea     edi, [eax+edi-1F908A28h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                and     ebp, ebx
                mov     edx, [esp+8]
                and     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+1Ch]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+1Ch]
                and     ebx, [esp+18h]
                xor     ebp, ecx
                lea     edi, [eax+edi-7A3EDF8Dh]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                and     ebp, ebx
                mov     edx, [esp+4]
                and     ebx, ecx
                mov     edi, [esp+8]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+18h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+34h]
                and     ebx, [esp+14h]
                xor     ebp, ecx
                lea     edi, [eax+edi+401A449Fh]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                and     ebp, ebx
                mov     edx, [esp]
                and     ebx, ecx
                mov     edi, [esp+4]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+14h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+20h]
                and     ebx, [esp+10h]
                xor     ebp, ecx
                lea     edi, [eax+edi+56C16AA6h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                and     ebp, ebx
                mov     edx, [esp+1Ch]
                and     ebx, ecx
                mov     edi, [esp]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+10h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+7Ch]
                and     ebx, [esp+0Ch]
                xor     ebp, ecx
                lea     edi, [eax+edi+4ED3AA62h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                and     ebp, ebx
                mov     edx, [esp+18h]
                and     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+0Ch]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+28h]
                and     ebx, [esp+8]
                xor     ebp, ecx
                lea     edi, [eax+edi+363F7706h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                and     ebp, ebx
                mov     edx, [esp+14h]
                and     ebx, ecx
                mov     edi, [esp+18h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+8]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+14h]
                and     ebx, [esp+4]
                xor     ebp, ecx
                lea     edi, [eax+edi+1BFEDF72h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                and     ebp, ebx
                mov     edx, [esp+10h]
                and     ebx, ecx
                mov     edi, [esp+14h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+4]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+24h]
                and     ebx, [esp]
                xor     ebp, ecx
                lea     edi, [eax+edi+429B023Dh]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                and     ebp, ebx
                mov     edx, [esp+0Ch]
                and     ebx, ecx
                mov     edi, [esp+10h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+38h]
                and     ebx, [esp+1Ch]
                xor     ebp, ecx
                lea     edi, [eax+edi+37D0D724h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                and     ebp, ebx
                mov     edx, [esp+8]
                and     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+1Ch]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+78h]
                and     ebx, [esp+18h]
                xor     ebp, ecx
                lea     edi, [eax+edi-2FF5EDB8h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                and     ebp, ebx
                mov     edx, [esp+4]
                and     ebx, ecx
                mov     edi, [esp+8]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+18h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+48h]
                and     ebx, [esp+14h]
                xor     ebp, ecx
                lea     edi, [eax+edi-24F0152Dh]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                and     ebp, ebx
                mov     edx, [esp]
                and     ebx, ecx
                mov     edi, [esp+4]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+14h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+18h]
                and     ebx, [esp+10h]
                xor     ebp, ecx
                lea     edi, [eax+edi+49F1C09Bh]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                and     ebp, ebx
                mov     edx, [esp+1Ch]
                and     ebx, ecx
                mov     edi, [esp]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+10h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+70h]
                and     ebx, [esp+0Ch]
                xor     ebp, ecx
                lea     edi, [eax+edi+75372C9h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                and     ebp, ebx
                mov     edx, [esp+18h]
                and     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+0Ch]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+60h]
                and     ebx, [esp+8]
                xor     ebp, ecx
                lea     edi, [eax+edi-7F66E485h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+10h]
                and     ebp, ebx
                mov     edx, [esp+14h]
                and     ebx, ecx
                mov     edi, [esp+18h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+8]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+8]
                and     ebx, [esp+4]
                xor     ebp, ecx
                lea     edi, [eax+edi+25D479D8h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+18h]
                mov     [esp+1Ch], ebp
                mov     ebx, [esp+8]
                mov     ecx, [esp+0Ch]
                and     ebp, ebx
                mov     edx, [esp+10h]
                and     ebx, ecx
                mov     edi, [esp+14h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+4]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+5Ch]
                and     ebx, [esp]
                xor     ebp, ecx
                lea     edi, [eax+edi-9172109h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+14h]
                mov     [esp+18h], ebp
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                and     ebp, ebx
                mov     edx, [esp+0Ch]
                and     ebx, ecx
                mov     edi, [esp+10h]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+40h]
                and     ebx, [esp+1Ch]
                xor     ebp, ecx
                lea     edi, [eax+edi-1C01AFE6h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+10h]
                mov     [esp+14h], ebp
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                and     ebp, ebx
                mov     edx, [esp+8]
                and     ebx, ecx
                mov     edi, [esp+0Ch]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+1Ch]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+58h]
                and     ebx, [esp+18h]
                xor     ebp, ecx
                lea     edi, [eax+edi-4986B3C5h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+0Ch]
                mov     [esp+10h], ebp
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp]
                and     ebp, ebx
                mov     edx, [esp+4]
                and     ebx, ecx
                mov     edi, [esp+8]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+18h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+10h]
                and     ebx, [esp+14h]
                xor     ebp, ecx
                lea     edi, [eax+edi-68931F43h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+8]
                mov     [esp+0Ch], ebp
                mov     ebx, [esp+18h]
                mov     ecx, [esp+1Ch]
                and     ebp, ebx
                mov     edx, [esp]
                and     ebx, ecx
                mov     edi, [esp+4]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+14h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+4]
                and     ebx, [esp+10h]
                xor     ebp, ecx
                lea     edi, [eax+edi+4C006BAh]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+4]
                mov     [esp+8], ebp
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                and     ebp, ebx
                mov     edx, [esp+1Ch]
                and     ebx, ecx
                mov     edi, [esp]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+10h]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+64h]
                and     ebx, [esp+0Ch]
                xor     ebp, ecx
                lea     edi, [eax+edi-3E56B04Ah]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp]
                mov     [esp+4], ebp
                mov     ebx, [esp+10h]
                mov     ecx, [esp+14h]
                and     ebp, ebx
                mov     edx, [esp+18h]
                and     ebx, ecx
                mov     edi, [esp+1Ch]
                and     ecx, edx
                xor     edx, 0FFFFFFFFh
                and     ebx, edi
                and     edi, [esp+0Ch]
                xor     ebx, edx
                ror     eax, 0Bh
                xor     ecx, edi
                mov     edi, [esi+3Ch]
                and     ebx, [esp+8]
                xor     ebp, ecx
                lea     edi, [eax+edi+409F60C4h]
                xor     ebp, ebx
                ror     ebp, 7
                add     ebp, edi
                mov     eax, [esp+1Ch]
                mov     [esp], ebp
                mov     edi, [esp+24h]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                add     [edi], eax
                add     [edi+4], ebx
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                add     [edi+8], ecx
                add     [edi+0Ch], edx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                add     [edi+10h], eax
                add     [edi+14h], ebx
                mov     ebp, [esp+28h]
                mov     ecx, [esp+18h]
                mov     edx, [esp+1Ch]
                mov     esp, ebp
                add     [edi+18h], ecx
                add     [edi+1Ch], edx
                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;
{$ENDIF}

{$IFDEF THash_Tiger_asm}
procedure THash_Tiger.DoTransform(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                lea     edi, [eax].THash_Tiger.FDigest
                mov     esi, edx
                push    ebp
                mov     ebp, [eax].THash_Tiger.FRounds
                lea     eax, Tiger_Data

                mov     ecx, esp
                add     esp, 0FFFFFF94h
                and     esp, 0FFFFFFC0h
                sub     ebp, 3
                mov     [esp+58h], esi
                mov     [esp+5Ch], edi
                mov     [esp+60h], ebp
                mov     [esp+64h], eax
                mov     [esp+68h], ecx
                mov     eax, [esi]
                mov     ebx, [esi+4]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     ecx, [esi+8]
                mov     edx, [esi+0Ch]
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     eax, [esi+10h]
                mov     ebx, [esi+14h]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     ecx, [esi+18h]
                mov     edx, [esi+1Ch]
                mov     [esp+18h], ecx
                mov     [esp+1Ch], edx
                mov     eax, [esi+20h]
                mov     ebx, [esi+24h]
                mov     [esp+20h], eax
                mov     [esp+24h], ebx
                mov     ecx, [esi+28h]
                mov     edx, [esi+2Ch]
                mov     [esp+28h], ecx
                mov     [esp+2Ch], edx
                mov     eax, [esi+30h]
                mov     ebx, [esi+34h]
                mov     [esp+30h], eax
                mov     [esp+34h], ebx
                mov     ecx, [esi+38h]
                mov     edx, [esi+3Ch]
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                mov     [esp+48h], ecx
                mov     [esp+4Ch], edx
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     esi, [esp+64h]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, [esp+50h]
                mov     edx, [esp+54h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+50h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+54h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+40h]
                mov     ebp, [esp+44h]
                sub     edi, ecx
                mov     eax, [esp+50h]
                sbb     ebp, edx
                mov     ebx, [esp+54h]
                mov     [esp+40h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+44h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Eh
                mov     ebp, ebx
                shl     ebx, 2
                mov     edi, eax
                shl     eax, 2
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     eax, [esp+8]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+40h]
                mov     edx, [esp+44h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+40h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+44h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+48h]
                mov     ebp, [esp+4Ch]
                sub     edi, ecx
                mov     eax, [esp+40h]
                sbb     ebp, edx
                mov     ebx, [esp+44h]
                mov     [esp+48h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+4Ch], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Eh
                mov     ebp, ebx
                shl     ebx, 2
                mov     edi, eax
                shl     eax, 2
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+48h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+4Ch], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+50h]
                mov     ebp, [esp+54h]
                sub     edi, ecx
                mov     eax, [esp+48h]
                sbb     ebp, edx
                mov     ebx, [esp+4Ch]
                mov     [esp+50h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+54h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Eh
                mov     ebp, ebx
                shl     ebx, 2
                mov     edi, eax
                shl     eax, 2
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     eax, [esp+18h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+50h]
                mov     edx, [esp+54h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+50h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+54h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+40h]
                mov     ebp, [esp+44h]
                sub     edi, ecx
                mov     eax, [esp+50h]
                sbb     ebp, edx
                mov     ebx, [esp+54h]
                mov     [esp+40h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+44h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Eh
                mov     ebp, ebx
                shl     ebx, 2
                mov     edi, eax
                shl     eax, 2
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     eax, [esp+20h]
                mov     ebx, [esp+24h]
                mov     ecx, [esp+40h]
                mov     edx, [esp+44h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+40h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+44h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+48h]
                mov     ebp, [esp+4Ch]
                sub     edi, ecx
                mov     eax, [esp+40h]
                sbb     ebp, edx
                mov     ebx, [esp+44h]
                mov     [esp+48h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+4Ch], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Eh
                mov     ebp, ebx
                shl     ebx, 2
                mov     edi, eax
                shl     eax, 2
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     eax, [esp+28h]
                mov     ebx, [esp+2Ch]
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+48h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+4Ch], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+50h]
                mov     ebp, [esp+54h]
                sub     edi, ecx
                mov     eax, [esp+48h]
                sbb     ebp, edx
                mov     ebx, [esp+4Ch]
                mov     [esp+50h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+54h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Eh
                mov     ebp, ebx
                shl     ebx, 2
                mov     edi, eax
                shl     eax, 2
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     ecx, [esp+50h]
                mov     edx, [esp+54h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+50h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+54h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+40h]
                mov     ebp, [esp+44h]
                sub     edi, ecx
                mov     eax, [esp+50h]
                sbb     ebp, edx
                mov     ebx, [esp+54h]
                mov     [esp+40h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+44h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Eh
                mov     ebp, ebx
                shl     ebx, 2
                mov     edi, eax
                shl     eax, 2
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     eax, [esp+38h]
                mov     ebx, [esp+3Ch]
                mov     ecx, [esp+40h]
                mov     edx, [esp+44h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+40h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+44h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+48h]
                mov     ebp, [esp+4Ch]
                sub     edi, ecx
                mov     eax, [esp+40h]
                sbb     ebp, edx
                mov     ebx, [esp+44h]
                mov     [esp+48h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+4Ch], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Eh
                mov     ebp, ebx
                shl     ebx, 2
                mov     edi, eax
                shl     eax, 2
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     eax, [esp+38h]
                mov     ebx, [esp+3Ch]
                xor     eax, 0A5A5A5A5h
                xor     ebx, 0A5A5A5A5h
                mov     ecx, [esp]
                mov     edx, [esp+4]
                sub     ecx, eax
                sbb     edx, ebx
                mov     [esp], ecx
                mov     [esp+4], edx
                mov     eax, [esp+8]
                mov     ebx, [esp+0Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+8], eax
                mov     edi, eax
                mov     esi, eax
                shr     edi, 0Dh
                xor     eax, 0FFFFFFFFh
                mov     [esp+0Ch], ebx
                mov     ecx, [esp+10h]
                shl     eax, 13h
                mov     ebp, ebx
                shl     ebx, 13h
                mov     edx, [esp+14h]
                add     esi, ecx
                mov     ecx, [esp+20h]
                adc     ebp, edx
                or      edi, ebx
                mov     [esp+10h], esi
                xor     esi, eax
                mov     [esp+14h], ebp
                mov     eax, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ebx, [esp+1Ch]
                xor     ebp, edi
                sub     eax, esi
                sbb     ebx, ebp
                mov     edx, [esp+24h]
                mov     [esp+18h], eax
                xor     eax, ecx
                mov     [esp+1Ch], ebx
                xor     ebx, edx
                mov     ecx, [esp+28h]
                mov     edx, [esp+2Ch]
                mov     edi, ebx
                mov     ebp, ebx
                mov     [esp+20h], eax
                xor     ebp, 0FFFFFFFFh
                shl     ebx, 9
                add     ecx, eax
                adc     edx, edi
                mov     [esp+24h], edi
                shr     ebp, 17h
                mov     [esp+28h], ecx
                shr     eax, 17h
                xor     ecx, 0FFFFFFFFh
                or      ebx, eax
                mov     [esp+2Ch], edx
                mov     eax, [esp+30h]
                xor     ecx, ebx
                mov     ebx, [esp+34h]
                xor     edx, ebp
                mov     edi, [esp+38h]
                sub     eax, ecx
                mov     ebp, [esp+3Ch]
                mov     [esp+30h], eax
                sbb     ebx, edx
                xor     edi, eax
                xor     ebp, ebx
                mov     [esp+34h], ebx
                mov     eax, [esp]
                mov     ecx, edi
                xor     edi, 0FFFFFFFFh
                mov     ebx, [esp+4]
                shl     edi, 13h
                mov     [esp+38h], ecx
                add     eax, ecx
                mov     [esp+3Ch], ebp
                adc     ebx, ebp
                xor     edi, eax
                shr     ecx, 0Dh
                mov     [esp], eax
                shl     ebp, 13h
                mov     [esp+4], ebx
                mov     esi, [esp+8]
                xor     ebx, 0FFFFFFFFh
                or      ebp, ecx
                mov     edx, [esp+0Ch]
                xor     ebp, ebx
                sub     esi, edi
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                sbb     edx, ebp
                mov     [esp+8], esi
                xor     eax, esi
                mov     [esp+0Ch], edx
                mov     edi, [esp+18h]
                mov     ebp, [esp+1Ch]
                xor     ebx, edx
                mov     [esp+10h], eax
                add     edi, eax
                mov     esi, ebx
                adc     ebp, ebx
                mov     [esp+14h], ebx
                shr     eax, 17h
                mov     ecx, [esp+20h]
                xor     ebx, 0FFFFFFFFh
                mov     edx, [esp+24h]
                shl     esi, 9
                mov     [esp+18h], edi
                or      eax, esi
                xor     edi, 0FFFFFFFFh
                shr     ebx, 17h
                mov     [esp+1Ch], ebp
                xor     eax, edi
                mov     edi, [esp+28h]
                xor     ebx, ebp
                sub     ecx, eax
                mov     ebp, [esp+2Ch]
                mov     [esp+20h], ecx
                sbb     edx, ebx
                xor     edi, ecx
                mov     [esp+24h], edx
                xor     ebp, edx
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     [esp+28h], edi
                add     eax, edi
                mov     [esp+2Ch], ebp
                mov     ecx, [esp+38h]
                adc     ebx, ebp
                mov     edx, [esp+3Ch]
                mov     [esp+30h], eax
                xor     eax, 89ABCDEFh
                mov     [esp+34h], ebx
                xor     ebx, 1234567h
                sub     ecx, eax
                sbb     edx, ebx
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     esi, [esp+64h]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+48h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+4Ch], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+50h]
                mov     ebp, [esp+54h]
                sub     edi, ecx
                mov     eax, [esp+48h]
                sbb     ebp, edx
                mov     ebx, [esp+4Ch]
                mov     [esp+50h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+54h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                sub     eax, edi
                sbb     ebx, ebp
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     eax, [esp+8]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+50h]
                mov     edx, [esp+54h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+50h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+54h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+40h]
                mov     ebp, [esp+44h]
                sub     edi, ecx
                mov     eax, [esp+50h]
                sbb     ebp, edx
                mov     ebx, [esp+54h]
                mov     [esp+40h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+44h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                sub     eax, edi
                sbb     ebx, ebp
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+40h]
                mov     edx, [esp+44h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+40h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+44h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+48h]
                mov     ebp, [esp+4Ch]
                sub     edi, ecx
                mov     eax, [esp+40h]
                sbb     ebp, edx
                mov     ebx, [esp+44h]
                mov     [esp+48h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+4Ch], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                sub     eax, edi
                sbb     ebx, ebp
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     eax, [esp+18h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+48h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+4Ch], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+50h]
                mov     ebp, [esp+54h]
                sub     edi, ecx
                mov     eax, [esp+48h]
                sbb     ebp, edx
                mov     ebx, [esp+4Ch]
                mov     [esp+50h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+54h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                sub     eax, edi
                sbb     ebx, ebp
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     eax, [esp+20h]
                mov     ebx, [esp+24h]
                mov     ecx, [esp+50h]
                mov     edx, [esp+54h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+50h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+54h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+40h]
                mov     ebp, [esp+44h]
                sub     edi, ecx
                mov     eax, [esp+50h]
                sbb     ebp, edx
                mov     ebx, [esp+54h]
                mov     [esp+40h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+44h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                sub     eax, edi
                sbb     ebx, ebp
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     eax, [esp+28h]
                mov     ebx, [esp+2Ch]
                mov     ecx, [esp+40h]
                mov     edx, [esp+44h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+40h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+44h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+48h]
                mov     ebp, [esp+4Ch]
                sub     edi, ecx
                mov     eax, [esp+40h]
                sbb     ebp, edx
                mov     ebx, [esp+44h]
                mov     [esp+48h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+4Ch], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                sub     eax, edi
                sbb     ebx, ebp
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+48h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+4Ch], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+50h]
                mov     ebp, [esp+54h]
                sub     edi, ecx
                mov     eax, [esp+48h]
                sbb     ebp, edx
                mov     ebx, [esp+4Ch]
                mov     [esp+50h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+54h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                sub     eax, edi
                sbb     ebx, ebp
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     eax, [esp+38h]
                mov     ebx, [esp+3Ch]
                mov     ecx, [esp+50h]
                mov     edx, [esp+54h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+50h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+54h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+40h]
                mov     ebp, [esp+44h]
                sub     edi, ecx
                mov     eax, [esp+50h]
                sbb     ebp, edx
                mov     ebx, [esp+54h]
                mov     [esp+40h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+44h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                sub     eax, edi
                sbb     ebx, ebp
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     eax, [esp+38h]
                mov     ebx, [esp+3Ch]
                xor     eax, 0A5A5A5A5h
                xor     ebx, 0A5A5A5A5h
                mov     ecx, [esp]
                mov     edx, [esp+4]
                sub     ecx, eax
                sbb     edx, ebx
                mov     [esp], ecx
                mov     [esp+4], edx
                mov     eax, [esp+8]
                mov     ebx, [esp+0Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+8], eax
                mov     edi, eax
                mov     esi, eax
                shr     edi, 0Dh
                xor     eax, 0FFFFFFFFh
                mov     [esp+0Ch], ebx
                mov     ecx, [esp+10h]
                shl     eax, 13h
                mov     ebp, ebx
                shl     ebx, 13h
                mov     edx, [esp+14h]
                add     esi, ecx
                mov     ecx, [esp+20h]
                adc     ebp, edx
                or      edi, ebx
                mov     [esp+10h], esi
                xor     esi, eax
                mov     [esp+14h], ebp
                mov     eax, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ebx, [esp+1Ch]
                xor     ebp, edi
                sub     eax, esi
                sbb     ebx, ebp
                mov     edx, [esp+24h]
                mov     [esp+18h], eax
                xor     eax, ecx
                mov     [esp+1Ch], ebx
                xor     ebx, edx
                mov     ecx, [esp+28h]
                mov     edx, [esp+2Ch]
                mov     edi, ebx
                mov     ebp, ebx
                mov     [esp+20h], eax
                xor     ebp, 0FFFFFFFFh
                shl     ebx, 9
                add     ecx, eax
                adc     edx, edi
                mov     [esp+24h], edi
                shr     ebp, 17h
                mov     [esp+28h], ecx
                shr     eax, 17h
                xor     ecx, 0FFFFFFFFh
                or      ebx, eax
                mov     [esp+2Ch], edx
                mov     eax, [esp+30h]
                xor     ecx, ebx
                mov     ebx, [esp+34h]
                xor     edx, ebp
                mov     edi, [esp+38h]
                sub     eax, ecx
                mov     ebp, [esp+3Ch]
                mov     [esp+30h], eax
                sbb     ebx, edx
                xor     edi, eax
                xor     ebp, ebx
                mov     [esp+34h], ebx
                mov     eax, [esp]
                mov     ecx, edi
                xor     edi, 0FFFFFFFFh
                mov     ebx, [esp+4]
                shl     edi, 13h
                mov     [esp+38h], ecx
                add     eax, ecx
                mov     [esp+3Ch], ebp
                adc     ebx, ebp
                xor     edi, eax
                shr     ecx, 0Dh
                mov     [esp], eax
                shl     ebp, 13h
                mov     [esp+4], ebx
                mov     esi, [esp+8]
                xor     ebx, 0FFFFFFFFh
                or      ebp, ecx
                mov     edx, [esp+0Ch]
                xor     ebp, ebx
                sub     esi, edi
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                sbb     edx, ebp
                mov     [esp+8], esi
                xor     eax, esi
                mov     [esp+0Ch], edx
                mov     edi, [esp+18h]
                mov     ebp, [esp+1Ch]
                xor     ebx, edx
                mov     [esp+10h], eax
                add     edi, eax
                mov     esi, ebx
                adc     ebp, ebx
                mov     [esp+14h], ebx
                shr     eax, 17h
                mov     ecx, [esp+20h]
                xor     ebx, 0FFFFFFFFh
                mov     edx, [esp+24h]
                shl     esi, 9
                mov     [esp+18h], edi
                or      eax, esi
                xor     edi, 0FFFFFFFFh
                shr     ebx, 17h
                mov     [esp+1Ch], ebp
                xor     eax, edi
                mov     edi, [esp+28h]
                xor     ebx, ebp
                sub     ecx, eax
                mov     ebp, [esp+2Ch]
                mov     [esp+20h], ecx
                sbb     edx, ebx
                xor     edi, ecx
                mov     [esp+24h], edx
                xor     ebp, edx
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     [esp+28h], edi
                add     eax, edi
                mov     [esp+2Ch], ebp
                mov     ecx, [esp+38h]
                adc     ebx, ebp
                mov     edx, [esp+3Ch]
                mov     [esp+30h], eax
                xor     eax, 89ABCDEFh
                mov     [esp+34h], ebx
                xor     ebx, 1234567h
                sub     ecx, eax
                sbb     edx, ebx
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx

@_pass_loop:
                mov     esi, [esp+64h]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, [esp+40h]
                mov     edx, [esp+44h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+40h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+44h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+48h]
                mov     ebp, [esp+4Ch]
                sub     edi, ecx
                mov     eax, [esp+40h]
                sbb     ebp, edx
                mov     ebx, [esp+44h]
                mov     [esp+48h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+4Ch], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     eax, [esp+8]
                mov     ebx, [esp+0Ch]
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+48h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+4Ch], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+50h]
                mov     ebp, [esp+54h]
                sub     edi, ecx
                mov     eax, [esp+48h]
                sbb     ebp, edx
                mov     ebx, [esp+4Ch]
                mov     [esp+50h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+54h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+50h]
                mov     edx, [esp+54h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+50h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+54h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+40h]
                mov     ebp, [esp+44h]
                sub     edi, ecx
                mov     eax, [esp+50h]
                sbb     ebp, edx
                mov     ebx, [esp+54h]
                mov     [esp+40h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+44h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     eax, [esp+18h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [esp+40h]
                mov     edx, [esp+44h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+40h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+44h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+48h]
                mov     ebp, [esp+4Ch]
                sub     edi, ecx
                mov     eax, [esp+40h]
                sbb     ebp, edx
                mov     ebx, [esp+44h]
                mov     [esp+48h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+4Ch], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     eax, [esp+20h]
                mov     ebx, [esp+24h]
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+48h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+4Ch], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+50h]
                mov     ebp, [esp+54h]
                sub     edi, ecx
                mov     eax, [esp+48h]
                sbb     ebp, edx
                mov     ebx, [esp+4Ch]
                mov     [esp+50h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+54h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     eax, [esp+28h]
                mov     ebx, [esp+2Ch]
                mov     ecx, [esp+50h]
                mov     edx, [esp+54h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+50h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+54h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+40h]
                mov     ebp, [esp+44h]
                sub     edi, ecx
                mov     eax, [esp+50h]
                sbb     ebp, edx
                mov     ebx, [esp+54h]
                mov     [esp+40h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+44h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     ecx, [esp+40h]
                mov     edx, [esp+44h]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+40h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+44h], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+48h]
                mov     ebp, [esp+4Ch]
                sub     edi, ecx
                mov     eax, [esp+40h]
                sbb     ebp, edx
                mov     ebx, [esp+44h]
                mov     [esp+48h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+4Ch], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     eax, [esp+38h]
                mov     ebx, [esp+3Ch]
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     edi, eax
                mov     [esp+48h], eax
                shr     eax, 0Dh
                mov     ebp, ebx
                and     edi, 0FFh
                mov     [esp+4Ch], ebx
                shl     edi, 3
                and     ebp, 0FFh
                shr     ebx, 0Dh
                and     eax, 7F8h
                shl     ebp, 3
                mov     ecx, [esi+edi]
                mov     edx, [esi+edi+4]
                xor     ecx, [esi+eax+800h]
                xor     edx, [esi+eax+804h]
                and     ebx, 7F8h
                xor     ecx, [esi+ebp+1000h]
                xor     edx, [esi+ebp+1004h]
                xor     ecx, [esi+ebx+1800h]
                xor     edx, [esi+ebx+1804h]
                mov     edi, [esp+50h]
                mov     ebp, [esp+54h]
                sub     edi, ecx
                mov     eax, [esp+48h]
                sbb     ebp, edx
                mov     ebx, [esp+4Ch]
                mov     [esp+50h], edi
                mov     edi, eax
                shr     eax, 5
                mov     [esp+54h], ebp
                shr     edi, 15h
                mov     ebp, ebx
                shr     ebx, 5
                and     eax, 7F8h
                shr     ebp, 15h
                and     edi, 7F8h
                and     ebx, 7F8h
                mov     ecx, [esi+eax+1800h]
                mov     edx, [esi+eax+1804h]
                xor     ecx, [esi+edi+1000h]
                and     ebp, 7F8h
                xor     edx, [esi+edi+1004h]
                xor     ecx, [esi+ebx+800h]
                xor     edx, [esi+ebx+804h]
                xor     ecx, [esi+ebp]
                xor     edx, [esi+ebp+4]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                add     eax, ecx
                adc     ebx, edx
                mov     ecx, eax
                shr     ecx, 1Dh
                mov     ebp, ebx
                shl     ebx, 3
                mov     edi, eax
                shl     eax, 3
                or      ebx, ecx
                add     eax, edi
                adc     ebx, ebp
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     esi, [esp+60h]
                test    esi, esi
                jnz     @_yet_more_cycles 
                jmp     @_pass_loop_end

@_yet_more_cycles:

                dec     esi
                mov     [esp+60h], esi
                mov     eax, [esp+38h]
                mov     ebx, [esp+3Ch]
                xor     eax, 0A5A5A5A5h
                xor     ebx, 0A5A5A5A5h
                mov     ecx, [esp]
                mov     edx, [esp+4]
                sub     ecx, eax
                sbb     edx, ebx
                mov     [esp], ecx
                mov     [esp+4], edx
                mov     eax, [esp+8]
                mov     ebx, [esp+0Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+8], eax
                mov     edi, eax
                mov     esi, eax
                shr     edi, 0Dh
                xor     eax, 0FFFFFFFFh
                mov     [esp+0Ch], ebx
                mov     ecx, [esp+10h]
                shl     eax, 13h
                mov     ebp, ebx
                shl     ebx, 13h
                mov     edx, [esp+14h]
                add     esi, ecx
                mov     ecx, [esp+20h]
                adc     ebp, edx
                or      edi, ebx
                mov     [esp+10h], esi
                xor     esi, eax
                mov     [esp+14h], ebp
                mov     eax, [esp+18h]
                xor     ebp, 0FFFFFFFFh
                mov     ebx, [esp+1Ch]
                xor     ebp, edi
                sub     eax, esi
                sbb     ebx, ebp
                mov     edx, [esp+24h]
                mov     [esp+18h], eax
                xor     eax, ecx
                mov     [esp+1Ch], ebx
                xor     ebx, edx
                mov     ecx, [esp+28h]
                mov     edx, [esp+2Ch]
                mov     edi, ebx
                mov     ebp, ebx
                mov     [esp+20h], eax
                xor     ebp, 0FFFFFFFFh
                shl     ebx, 9
                add     ecx, eax
                adc     edx, edi
                mov     [esp+24h], edi
                shr     ebp, 17h
                mov     [esp+28h], ecx
                shr     eax, 17h
                xor     ecx, 0FFFFFFFFh
                or      ebx, eax
                mov     [esp+2Ch], edx
                mov     eax, [esp+30h]
                xor     ecx, ebx
                mov     ebx, [esp+34h]
                xor     edx, ebp
                mov     edi, [esp+38h]
                sub     eax, ecx
                mov     ebp, [esp+3Ch]
                mov     [esp+30h], eax
                sbb     ebx, edx
                xor     edi, eax
                xor     ebp, ebx
                mov     [esp+34h], ebx
                mov     eax, [esp]
                mov     ecx, edi
                xor     edi, 0FFFFFFFFh
                mov     ebx, [esp+4]
                shl     edi, 13h
                mov     [esp+38h], ecx
                add     eax, ecx
                mov     [esp+3Ch], ebp
                adc     ebx, ebp
                xor     edi, eax
                shr     ecx, 0Dh
                mov     [esp], eax
                shl     ebp, 13h
                mov     [esp+4], ebx
                mov     esi, [esp+8]
                xor     ebx, 0FFFFFFFFh
                or      ebp, ecx
                mov     edx, [esp+0Ch]
                xor     ebp, ebx
                sub     esi, edi
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                sbb     edx, ebp
                mov     [esp+8], esi
                xor     eax, esi
                mov     [esp+0Ch], edx
                mov     edi, [esp+18h]
                mov     ebp, [esp+1Ch]
                xor     ebx, edx
                mov     [esp+10h], eax
                add     edi, eax
                mov     esi, ebx
                adc     ebp, ebx
                mov     [esp+14h], ebx
                shr     eax, 17h
                mov     ecx, [esp+20h]
                xor     ebx, 0FFFFFFFFh
                mov     edx, [esp+24h]
                shl     esi, 9
                mov     [esp+18h], edi
                or      eax, esi
                xor     edi, 0FFFFFFFFh
                shr     ebx, 17h
                mov     [esp+1Ch], ebp
                xor     eax, edi
                mov     edi, [esp+28h]
                xor     ebx, ebp
                sub     ecx, eax
                mov     ebp, [esp+2Ch]
                mov     [esp+20h], ecx
                sbb     edx, ebx
                xor     edi, ecx
                mov     [esp+24h], edx
                xor     ebp, edx
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     [esp+28h], edi
                add     eax, edi
                mov     [esp+2Ch], ebp
                mov     ecx, [esp+38h]
                adc     ebx, ebp
                mov     edx, [esp+3Ch]
                mov     [esp+30h], eax
                xor     eax, 89ABCDEFh
                mov     [esp+34h], ebx
                xor     ebx, 1234567h
                sub     ecx, eax
                sbb     edx, ebx
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                mov     ecx, [esp+48h]
                mov     edx, [esp+4Ch]
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     edi, [esp+50h]
                mov     ebp, [esp+54h]
                mov     [esp+50h], ecx
                mov     [esp+54h], edx
                mov     [esp+40h], edi
                mov     [esp+44h], ebp
                jmp     @_pass_loop

@_pass_loop_end:
                mov     esi, [esp+5Ch]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                mov     edi, [esp+48h]
                mov     ebp, [esp+4Ch]
                mov     ecx, [esi]
                mov     edx, [esi+4]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esi], eax
                mov     ecx, [esi+8]
                mov     edx, [esi+0Ch]
                mov     [esi+4], ebx
                sub     edi, ecx
                mov     ecx, [esi+10h]
                mov     [esi+8], edi
                sbb     ebp, edx
                mov     edx, [esi+14h]
                mov     [esi+0Ch], ebp
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                add     ecx, eax
                adc     edx, ebx
                mov     [esi+10h], ecx
                mov     [esi+14h], edx
                mov     ebp, [esp+68h]
                mov     esp, ebp
                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;
{$ENDIF}

{$IFDEF THash_Panama_asm}
procedure THash_Panama.DoPull;
asm
                push    ebx
                push    esi
                lea     edx, [eax].THash_Panama.FTap
                push    edi
                lea     edi, [eax].THash_Panama.FDigest
                push    ebp
                lea     eax, [eax].THash_Panama.FLFSRBuffer
                mov     ebp, esp
                add     esp, 0FFFFFF5Ch
                and     esp, 0FFFFFFE0h
                mov     [esp+88h], edi
                mov     [esp+8Ch], edx
                mov     ecx, 20h
                mov     [esp+90h], eax
                mov     [esp+0A0h], ebp
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     ebp, [edi+8]
                mov     esi, [edi+0Ch]
                mov     [esp+8], ebp
                mov     [esp+0Ch], esi
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     ebp, [edi+18h]
                mov     esi, [edi+1Ch]
                mov     [esp+18h], ebp
                mov     [esp+1Ch], esi
                mov     eax, [edi+20h]
                mov     ebx, [edi+24h]
                mov     [esp+20h], eax
                mov     [esp+24h], ebx
                mov     ebp, [edi+28h]
                mov     esi, [edi+2Ch]
                mov     [esp+28h], ebp
                mov     [esp+2Ch], esi
                mov     eax, [edi+30h]
                mov     ebx, [edi+34h]
                mov     [esp+30h], eax
                mov     [esp+34h], ebx
                mov     ebp, [edi+38h]
                mov     esi, [edi+3Ch]
                mov     eax, [edi+40h]
                mov     [esp+38h], ebp
                mov     [esp+3Ch], esi
                mov     [esp+40h], eax
@@_loop_start:
                mov     esi, [esp+8Ch]
                dec     ecx
                mov     ebp, [esp+90h]
                mov     [esp+9Ch], ecx
                mov     edx, [esi]
                mov     eax, edx
                mov     ecx, edx
                add     edx, 10h
                dec     eax
                add     ecx, 4
                and     edx, 1Fh
                and     eax, 1Fh
                and     ecx, 1Fh
                shl     edx, 5
                mov     [esi], eax
                shl     ecx, 5
                mov     ebx, eax
                shl     eax, 5
                add     edx, ebp
                add     ebx, 19h
                add     eax, ebp
                and     ebx, 1Fh
                add     ecx, ebp
                shl     ebx, 5
                mov     [esp+98h], edx
                add     ebx, ebp
                mov     [esp+94h], ecx
                mov     ecx, [ebx]
                mov     edx, [eax+8]
                mov     edi, [ebx+4]
                mov     ebp, [eax+0Ch]
                xor     ecx, edx
                xor     edi, ebp
                mov     [ebx], ecx
                mov     [ebx+4], edi
                mov     ecx, [ebx+8]
                mov     edx, [eax+10h]
                mov     edi, [ebx+0Ch]
                mov     ebp, [eax+14h]
                xor     ecx, edx
                xor     edi, ebp
                mov     [ebx+8], ecx
                mov     [ebx+0Ch], edi
                mov     ecx, [ebx+10h]
                mov     edx, [eax+18h]
                mov     edi, [ebx+14h]
                mov     ebp, [eax+1Ch]
                xor     ecx, edx
                xor     edi, ebp
                mov     [ebx+10h], ecx
                mov     [ebx+14h], edi
                mov     ecx, [ebx+18h]
                mov     edx, [eax]
                mov     edi, [ebx+1Ch]
                mov     ebp, [eax+4]
                xor     ecx, edx
                xor     edi, ebp
                mov     [ebx+18h], ecx
                mov     [ebx+1Ch], edi
                mov     ecx, [eax]
                mov     edx, [esp+4]
                mov     edi, [eax+4]
                mov     ebp, [esp+8]
                xor     ecx, edx
                xor     edi, ebp
                mov     [eax], ecx
                mov     [eax+4], edi
                mov     ecx, [eax+8]
                mov     edx, [esp+0Ch]
                mov     edi, [eax+0Ch]
                mov     ebp, [esp+10h]
                xor     ecx, edx
                xor     edi, ebp
                mov     [eax+8], ecx
                mov     [eax+0Ch], edi
                mov     ecx, [eax+10h]
                mov     edx, [esp+14h]
                mov     edi, [eax+14h]
                mov     ebp, [esp+18h]
                xor     ecx, edx
                xor     edi, ebp
                mov     [eax+10h], ecx
                mov     [eax+14h], edi
                mov     ecx, [eax+18h]
                mov     edx, [esp+1Ch]
                mov     edi, [eax+1Ch]
                mov     ebp, [esp+20h]
                xor     ecx, edx
                xor     edi, ebp
                mov     [eax+18h], ecx
                mov     [eax+1Ch], edi
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     esi, ecx
                xor     ecx, 0FFFFFFFFh
                mov     ebp, ebx
                or      ecx, ebx
                xor     ecx, eax
                mov     [esp+44h], ecx
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+10h]
                mov     eax, ecx
                xor     ecx, 0FFFFFFFFh
                mov     ebx, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, esi
                or      edx, eax
                xor     ebp, ecx
                mov     ecx, [esp+14h]
                rol     ebp, 0Fh
                xor     esi, edx
                mov     edx, [esp+18h]
                ror     esi, 9
                mov     [esp+58h], ebp
                mov     ebp, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+6Ch], esi
                mov     esi, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, ebx
                or      edx, ebp
                xor     eax, ecx
                mov     ecx, [esp+1Ch]
                ror     eax, 8
                xor     ebx, edx
                mov     edx, [esp+20h]
                rol     ebx, 6
                mov     [esp+80h], eax
                mov     eax, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+50h], ebx
                mov     ebx, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, esi
                or      edx, eax
                xor     ebp, ecx
                mov     ecx, [esp+24h]
                rol     ebp, 4
                xor     esi, edx
                mov     edx, [esp+28h]
                ror     esi, 5
                mov     [esp+64h], ebp
                mov     ebp, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+78h], esi
                mov     esi, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, ebx
                or      edx, ebp
                xor     eax, ecx
                mov     ecx, [esp+2Ch]
                rol     eax, 1
                xor     ebx, edx
                mov     edx, [esp+30h]
                ror     ebx, 0Bh
                mov     [esp+48h], eax
                mov     eax, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+5Ch], ebx
                mov     ebx, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, esi
                or      edx, eax
                xor     ebp, ecx
                mov     ecx, [esp+34h]
                rol     ebp, 2
                xor     esi, edx
                mov     edx, [esp+38h]
                rol     esi, 8
                mov     [esp+70h], ebp
                mov     ebp, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+84h], esi
                mov     esi, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, ebx
                or      edx, ebp
                xor     eax, ecx
                mov     ecx, [esp+3Ch]
                rol     eax, 0Ah
                xor     ebx, edx
                mov     edx, [esp+40h]
                rol     ebx, 0Dh
                mov     [esp+54h], eax
                mov     eax, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+68h], ebx
                mov     ebx, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, esi
                or      edx, eax
                xor     ebp, ecx
                mov     ecx, [esp]
                rol     ebp, 9
                xor     esi, edx
                mov     edx, [esp+4]
                rol     esi, 3
                mov     [esp+7Ch], ebp
                mov     ebp, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+4Ch], esi
                mov     esi, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, ebx
                or      edx, ebp
                xor     eax, ecx
                xor     ebx, edx
                ror     eax, 4
                rol     ebx, 0Eh
                mov     [esp+60h], eax
                mov     [esp+74h], ebx
                mov     eax, [esp+44h]
                mov     ebx, [esp+48h]
                mov     ecx, [esp+4Ch]
                xor     eax, 1
                mov     edx, [esp+50h]
                xor     eax, ebx
                mov     ebp, [esp+54h]
                xor     eax, ebp
                mov     esi, [esp+94h]
                mov     [esp], eax
                xor     ebx, ecx
                mov     eax, [esp+58h]
                xor     ecx, edx
                mov     edi, [esp+5Ch]
                xor     ebx, eax
                xor     ecx, edi
                xor     ebx, [esi]
                xor     ecx, [esi+4]
                mov     [esp+4], ebx
                mov     [esp+8], ecx
                xor     edx, ebp
                mov     ecx, [esp+60h]
                xor     ebp, eax
                mov     ebx, [esp+64h]
                xor     edx, ecx
                xor     ebp, ebx
                xor     edx, [esi+8]
                xor     ebp, [esi+0Ch]
                mov     [esp+0Ch], edx
                mov     [esp+10h], ebp
                xor     eax, edi
                mov     edx, [esp+68h]
                xor     edi, ecx
                mov     ebp, [esp+6Ch]
                xor     eax, edx
                xor     edi, ebp
                xor     eax, [esi+10h]
                xor     edi, [esi+14h]
                mov     [esp+14h], eax
                mov     [esp+18h], edi
                xor     ecx, ebx
                mov     eax, [esp+70h]
                xor     ebx, edx
                mov     edi, [esp+74h]
                xor     ecx, eax
                xor     ebx, edi
                xor     ecx, [esi+18h]
                xor     ebx, [esi+1Ch]
                mov     [esp+1Ch], ecx
                mov     [esp+20h], ebx
                mov     esi, [esp+98h]
                xor     edx, ebp
                mov     ecx, [esp+78h]
                xor     ebp, eax
                mov     ebx, [esp+7Ch]
                xor     edx, ecx
                xor     ebp, ebx
                xor     edx, [esi]
                xor     ebp, [esi+4]
                mov     [esp+24h], edx
                mov     [esp+28h], ebp
                xor     eax, edi
                mov     edx, [esp+80h]
                xor     edi, ecx
                mov     ebp, [esp+84h]
                xor     eax, edx
                xor     edi, ebp
                xor     eax, [esi+8]
                xor     edi, [esi+0Ch]
                mov     [esp+2Ch], eax
                mov     [esp+30h], edi
                xor     ecx, ebx
                mov     eax, [esp+44h]
                xor     ebx, edx
                mov     edi, [esp+48h]
                xor     ecx, eax
                xor     ebx, edi
                xor     ecx, [esi+10h]
                xor     ebx, [esi+14h]
                mov     [esp+34h], ecx
                mov     [esp+38h], ebx
                mov     ecx, [esp+4Ch]
                xor     edx, ebp
                mov     ebx, [esp+50h]
                xor     ebp, eax
                xor     edx, ecx
                xor     ebp, ebx
                xor     edx, [esi+18h]
                xor     ebp, [esi+1Ch]
                mov     [esp+3Ch], edx
                mov     [esp+40h], ebp
                mov     ecx, [esp+9Ch]
                test    ecx, ecx
                jnz     @@_loop_start
                mov     edi, [esp+88h]
                mov     ebp, [esp+0A0h]
                mov     eax, [esp+24h]
                mov     ebx, [esp+28h]
                mov     [edi], eax
                mov     [edi+4], ebx
                mov     ecx, [esp+2Ch]
                mov     edx, [esp+30h]
                mov     [edi+8], ecx
                mov     [edi+0Ch], edx
                mov     eax, [esp+34h]
                mov     ebx, [esp+38h]
                mov     [edi+10h], eax
                mov     [edi+14h], ebx
                mov     ecx, [esp+3Ch]
                mov     edx, [esp+40h]
                mov     esp, ebp
                mov     [edi+18h], ecx
                mov     [edi+1Ch], edx
                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;

procedure THash_Panama.DoTransform(Buffer: PLongArray); assembler;
asm
                push    ebx
                push    esi
                mov     esi, edx
                push    edi
                lea     edi, [eax].THash_Panama.FDigest
                lea     edx, [eax].THash_Panama.FTap
                push    ebp
                lea     eax, [eax].THash_Panama.FLFSRBuffer

                mov     ebp, esp
                add     esp, 0FFFFFF5Ch
                and     esp, 0FFFFFFE0h
                mov     [esp+88h], edi
                mov     [esp+8Ch], esi
                mov     [esp+90h], edx
                mov     [esp+94h], eax
                mov     [esp+0A0h], ebp
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     ebp, [edi+8]
                mov     esi, [edi+0Ch]
                mov     [esp+8], ebp
                mov     [esp+0Ch], esi
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     ebp, [edi+18h]
                mov     esi, [edi+1Ch]
                mov     [esp+18h], ebp
                mov     [esp+1Ch], esi
                mov     eax, [edi+20h]
                mov     ebx, [edi+24h]
                mov     [esp+20h], eax
                mov     [esp+24h], ebx
                mov     ebp, [edi+28h]
                mov     esi, [edi+2Ch]
                mov     [esp+28h], ebp
                mov     [esp+2Ch], esi
                mov     eax, [edi+30h]
                mov     ebx, [edi+34h]
                mov     [esp+30h], eax
                mov     [esp+34h], ebx
                mov     ebp, [edi+38h]
                mov     esi, [edi+3Ch]
                mov     eax, [edi+40h]
                mov     [esp+38h], ebp
                mov     [esp+3Ch], esi
                mov     [esp+40h], eax

                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     esi, ecx
                xor     ecx, 0FFFFFFFFh
                mov     ebp, ebx
                or      ecx, ebx
                xor     ecx, eax
                mov     [esp+44h], ecx
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+10h]
                mov     eax, ecx
                xor     ecx, 0FFFFFFFFh
                mov     ebx, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, esi
                or      edx, eax
                xor     ebp, ecx
                mov     ecx, [esp+14h]
                rol     ebp, 0Fh
                xor     esi, edx
                mov     edx, [esp+18h]
                ror     esi, 9
                mov     [esp+58h], ebp
                mov     ebp, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+6Ch], esi
                mov     esi, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, ebx
                or      edx, ebp
                xor     eax, ecx
                mov     ecx, [esp+1Ch]
                ror     eax, 8
                xor     ebx, edx
                mov     edx, [esp+20h]
                rol     ebx, 6
                mov     [esp+80h], eax
                mov     eax, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+50h], ebx
                mov     ebx, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, esi
                or      edx, eax
                xor     ebp, ecx
                mov     ecx, [esp+24h]
                rol     ebp, 4
                xor     esi, edx
                mov     edx, [esp+28h]
                ror     esi, 5
                mov     [esp+64h], ebp
                mov     ebp, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+78h], esi
                mov     esi, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, ebx
                or      edx, ebp
                xor     eax, ecx
                mov     ecx, [esp+2Ch]
                rol     eax, 1
                xor     ebx, edx
                mov     edx, [esp+30h]
                ror     ebx, 0Bh
                mov     [esp+48h], eax
                mov     eax, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+5Ch], ebx
                mov     ebx, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, esi
                or      edx, eax
                xor     ebp, ecx
                mov     ecx, [esp+34h]
                rol     ebp, 2
                xor     esi, edx
                mov     edx, [esp+38h]
                rol     esi, 8
                mov     [esp+70h], ebp
                mov     ebp, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+84h], esi
                mov     esi, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, ebx
                or      edx, ebp
                xor     eax, ecx
                mov     ecx, [esp+3Ch]
                rol     eax, 0Ah
                xor     ebx, edx
                mov     edx, [esp+40h]
                rol     ebx, 0Dh
                mov     [esp+54h], eax
                mov     eax, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+68h], ebx
                mov     ebx, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, esi
                or      edx, eax
                xor     ebp, ecx
                mov     ecx, [esp]
                rol     ebp, 9
                xor     esi, edx
                mov     edx, [esp+4]
                rol     esi, 3
                mov     [esp+7Ch], ebp
                mov     ebp, ecx
                xor     ecx, 0FFFFFFFFh
                mov     [esp+4Ch], esi
                mov     esi, edx
                xor     edx, 0FFFFFFFFh
                or      ecx, ebx
                or      edx, ebp
                xor     eax, ecx
                xor     ebx, edx
                ror     eax, 4
                rol     ebx, 0Eh
                mov     [esp+60h], eax
                mov     [esp+74h], ebx
                mov     esi, [esp+90h]
                mov     ebp, [esp+94h]
                mov     edx, [esi]
                mov     eax, edx
                add     edx, 10h
                dec     eax
                and     edx, 1Fh
                and     eax, 1Fh
                shl     edx, 5
                mov     [esi], eax
                add     edx, ebp
                mov     ebx, eax
                shl     eax, 5
                add     ebx, 19h
                add     eax, ebp
                and     ebx, 1Fh
                shl     ebx, 5
                mov     [esp+98h], edx
                add     ebx, ebp
                mov     ecx, [ebx]
                mov     edx, [eax+8]
                mov     edi, [ebx+4]
                mov     ebp, [eax+0Ch]
                xor     ecx, edx
                xor     edi, ebp
                mov     [ebx], ecx
                mov     [ebx+4], edi
                mov     ecx, [ebx+8]
                mov     edx, [eax+10h]
                mov     edi, [ebx+0Ch]
                mov     ebp, [eax+14h]
                xor     ecx, edx
                xor     edi, ebp
                mov     [ebx+8], ecx
                mov     [ebx+0Ch], edi
                mov     ecx, [ebx+10h]
                mov     edx, [eax+18h]
                mov     edi, [ebx+14h]
                mov     ebp, [eax+1Ch]
                xor     ecx, edx
                xor     edi, ebp
                mov     [ebx+10h], ecx
                mov     [ebx+14h], edi
                mov     ecx, [ebx+18h]
                mov     edx, [eax]
                mov     edi, [ebx+1Ch]
                mov     ebp, [eax+4]
                xor     ecx, edx
                xor     edi, ebp
                mov     [ebx+18h], ecx
                mov     [ebx+1Ch], edi
                mov     ebx, [esp+8Ch]
                mov     ecx, [eax]
                mov     edx, [ebx]
                mov     edi, [eax+4]
                mov     ebp, [ebx+4]
                xor     ecx, edx
                xor     edi, ebp
                mov     [eax], ecx
                mov     [eax+4], edi
                mov     ecx, [eax+8]
                mov     edx, [ebx+8]
                mov     edi, [eax+0Ch]
                mov     ebp, [ebx+0Ch]
                xor     ecx, edx
                xor     edi, ebp
                mov     [eax+8], ecx
                mov     [eax+0Ch], edi
                mov     ecx, [eax+10h]
                mov     edx, [ebx+10h]
                mov     edi, [eax+14h]
                mov     ebp, [ebx+14h]
                xor     ecx, edx
                xor     edi, ebp
                mov     [eax+10h], ecx
                mov     [eax+14h], edi
                mov     ecx, [eax+18h]
                mov     edx, [ebx+18h]
                mov     edi, [eax+1Ch]
                mov     ebp, [ebx+1Ch]
                xor     ecx, edx
                xor     edi, ebp
                mov     [eax+18h], ecx
                mov     [eax+1Ch], edi
                mov     eax, [esp+44h]
                mov     ebx, [esp+48h]
                mov     ecx, [esp+4Ch]
                xor     eax, 1
                mov     edx, [esp+50h]
                xor     eax, ebx
                mov     ebp, [esp+54h]
                xor     eax, ebp
                mov     esi, [esp+8Ch]
                mov     [esp], eax
                xor     ebx, ecx
                mov     eax, [esp+58h]
                xor     ecx, edx
                mov     edi, [esp+5Ch]
                xor     ebx, eax
                xor     ecx, edi
                xor     ebx, [esi]
                xor     ecx, [esi+4]
                mov     [esp+4], ebx
                mov     [esp+8], ecx
                xor     edx, ebp
                mov     ecx, [esp+60h]
                xor     ebp, eax
                mov     ebx, [esp+64h]
                xor     edx, ecx
                xor     ebp, ebx
                xor     edx, [esi+8]
                xor     ebp, [esi+0Ch]
                mov     [esp+0Ch], edx
                mov     [esp+10h], ebp
                xor     eax, edi
                mov     edx, [esp+68h]
                xor     edi, ecx
                mov     ebp, [esp+6Ch]
                xor     eax, edx
                xor     edi, ebp
                xor     eax, [esi+10h]
                xor     edi, [esi+14h]
                mov     [esp+14h], eax
                mov     [esp+18h], edi
                xor     ecx, ebx
                mov     eax, [esp+70h]
                xor     ebx, edx
                mov     edi, [esp+74h]
                xor     ecx, eax
                xor     ebx, edi
                xor     ecx, [esi+18h]
                xor     ebx, [esi+1Ch]
                add     esi, 20h 
                mov     [esp+1Ch], ecx
                mov     [esp+20h], ebx
                mov     [esp+8Ch], esi
                mov     esi, [esp+98h]
                xor     edx, ebp
                mov     ecx, [esp+78h]
                xor     ebp, eax
                mov     ebx, [esp+7Ch]
                xor     edx, ecx
                xor     ebp, ebx
                xor     edx, [esi]
                xor     ebp, [esi+4]
                mov     [esp+24h], edx
                mov     [esp+28h], ebp
                xor     eax, edi
                mov     edx, [esp+80h]
                xor     edi, ecx
                mov     ebp, [esp+84h]
                xor     eax, edx
                xor     edi, ebp
                xor     eax, [esi+8]
                xor     edi, [esi+0Ch]
                mov     [esp+2Ch], eax
                mov     [esp+30h], edi
                xor     ecx, ebx
                mov     eax, [esp+44h]
                xor     ebx, edx
                mov     edi, [esp+48h]
                xor     ecx, eax
                xor     ebx, edi
                xor     ecx, [esi+10h]
                xor     ebx, [esi+14h]
                mov     [esp+34h], ecx
                mov     [esp+38h], ebx
                mov     ecx, [esp+4Ch]
                xor     edx, ebp
                mov     ebx, [esp+50h]
                xor     ebp, eax
                xor     edx, ecx
                xor     ebp, ebx
                xor     edx, [esi+18h]
                xor     ebp, [esi+1Ch]
                mov     [esp+3Ch], edx
                mov     [esp+40h], ebp

                mov     edi, [esp+88h]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     [edi], eax
                mov     [edi+4], ebx
                mov     ebp, [esp+8]
                mov     esi, [esp+0Ch]
                mov     [edi+8], ebp
                mov     [edi+0Ch], esi
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     [edi+10h], eax
                mov     [edi+14h], ebx
                mov     ebp, [esp+18h]
                mov     esi, [esp+1Ch]
                mov     [edi+18h], ebp
                mov     [edi+1Ch], esi
                mov     eax, [esp+20h]
                mov     ebx, [esp+24h]
                mov     [edi+20h], eax
                mov     [edi+24h], ebx
                mov     ebp, [esp+28h]
                mov     esi, [esp+2Ch]
                mov     [edi+28h], ebp
                mov     [edi+2Ch], esi
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     [edi+30h], eax
                mov     [edi+34h], ebx
                mov     ebp, [esp+38h]
                mov     esi, [esp+3Ch]
                mov     eax, [esp+40h]
                mov     [edi+38h], ebp
                mov     [edi+3Ch], esi
                mov     [edi+40h], eax
                mov     ebp, [esp+0A0h]
                mov     esp, ebp
                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
end;
{$ENDIF}

{$IFDEF THashBaseWhirlpool_asm}
procedure THashBaseWhirlpool.DoTransform(Buffer: PLongArray); assembler;
asm
                push    ebx
                push    esi
                push    edi
                mov     esi, edx
                lea     edi, [eax].THashBaseWhirlpool.FDigest
                push    ebp
                mov     ebx, [eax].THashBaseWhirlpool.FTableC
                mov     eax, [eax].THashBaseWhirlpool.FTableR

                mov     ebp, esp
                add     esp, 0FFFFFEE8h
                and     esp, 0FFFFFFE0h
                mov     [esp+100h], eax
                mov     [esp+104h], ebx
                mov     [esp+10Ch], edi
                mov     [esp+110h], esi
                mov     [esp+114h], ebp
                xor     ebp, ebp
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp+40h], eax
                mov     ecx, [esi]
                mov     edx, [esi+4]
                mov     [esp+44h], ebx
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [edi+8]
                mov     ebx, [edi+0Ch]
                mov     [esp+48h], eax
                mov     ecx, [esi+8]
                mov     edx, [esi+0Ch]
                mov     [esp+4Ch], ebx
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+8], eax
                mov     [esp+0Ch], ebx
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     [esp+50h], eax
                mov     ecx, [esi+10h]
                mov     edx, [esi+14h]
                mov     [esp+54h], ebx
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     eax, [edi+18h]
                mov     ebx, [edi+1Ch]
                mov     [esp+58h], eax
                mov     ecx, [esi+18h]
                mov     edx, [esi+1Ch]
                mov     [esp+5Ch], ebx
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+18h], eax
                mov     [esp+1Ch], ebx
                mov     eax, [edi+20h]
                mov     ebx, [edi+24h]
                mov     [esp+60h], eax
                mov     ecx, [esi+20h]
                mov     edx, [esi+24h]
                mov     [esp+64h], ebx
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+20h], eax
                mov     [esp+24h], ebx
                mov     eax, [edi+28h]
                mov     ebx, [edi+2Ch]
                mov     [esp+68h], eax
                mov     ecx, [esi+28h]
                mov     edx, [esi+2Ch]
                mov     [esp+6Ch], ebx
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+28h], eax
                mov     [esp+2Ch], ebx
                mov     eax, [edi+30h]
                mov     ebx, [edi+34h]
                mov     [esp+70h], eax
                mov     ecx, [esi+30h]
                mov     edx, [esi+34h]
                mov     [esp+74h], ebx
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+30h], eax
                mov     [esp+34h], ebx
                mov     eax, [edi+38h]
                mov     ebx, [edi+3Ch]
                mov     [esp+78h], eax
                mov     ecx, [esi+38h]
                mov     edx, [esi+3Ch]
                mov     [esp+7Ch], ebx
                xor     eax, ecx
                xor     ebx, edx
                mov     [esp+38h], eax
                mov     [esp+3Ch], ebx

@@_loop_start:                          
                mov     [esp+108h], ebp
                mov     edi, [esp+100h]
                mov     esi, [esp+104h]
                mov     eax, [edi+ebp]
                mov     ebx, [edi+ebp+4]
                mov     ecx, [esp+40h]
                mov     edx, [esp+78h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+70h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+68h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+64h]
                mov     edx, [esp+5Ch]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+54h]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+4Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+80h], eax
                mov     [esp+84h], ebx
                mov     ecx, [esp+48h]
                mov     edx, [esp+40h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+78h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+70h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+6Ch]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+64h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+5Ch]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+54h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+88h], eax
                mov     [esp+8Ch], ebx
                mov     ecx, [esp+50h]
                mov     edx, [esp+48h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+40h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+78h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+74h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+6Ch]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+64h]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+5Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+90h], eax
                mov     [esp+94h], ebx
                mov     ecx, [esp+58h]
                mov     edx, [esp+50h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+48h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+40h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+7Ch]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+74h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+6Ch]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+64h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+98h], eax
                mov     [esp+9Ch], ebx
                mov     ecx, [esp+60h]
                mov     edx, [esp+58h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+50h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+48h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+44h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+7Ch]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+74h]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+6Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0A0h], eax
                mov     [esp+0A4h], ebx
                mov     ecx, [esp+68h]
                mov     edx, [esp+60h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+58h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+50h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+4Ch]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+44h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+7Ch]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+74h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0A8h], eax
                mov     [esp+0ACh], ebx
                mov     ecx, [esp+70h]
                mov     edx, [esp+68h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+60h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+58h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+54h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+4Ch]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+44h]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+7Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0B0h], eax
                mov     [esp+0B4h], ebx
                mov     ecx, [esp+78h]
                mov     edx, [esp+70h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+68h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+60h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+5Ch]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+54h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+4Ch]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+44h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0B8h], eax
                mov     [esp+0BCh], ebx
                mov     eax, [esp+80h]
                mov     ebx, [esp+84h]
                mov     ecx, [esp]
                mov     edx, [esp+38h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+30h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+28h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+24h]
                mov     edx, [esp+1Ch]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+14h]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0C0h], eax
                mov     [esp+0C4h], ebx
                mov     eax, [esp+88h]
                mov     ebx, [esp+8Ch]
                mov     ecx, [esp+8]
                mov     edx, [esp]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+38h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+30h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+2Ch]
                mov     edx, [esp+24h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+1Ch]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+14h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0C8h], eax
                mov     [esp+0CCh], ebx
                mov     eax, [esp+90h]
                mov     ebx, [esp+94h]
                mov     ecx, [esp+10h]
                mov     edx, [esp+8]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+38h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+34h]
                mov     edx, [esp+2Ch]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+24h]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+1Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0D0h], eax
                mov     [esp+0D4h], ebx
                mov     eax, [esp+98h]
                mov     ebx, [esp+9Ch]
                mov     ecx, [esp+18h]
                mov     edx, [esp+10h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+8]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+3Ch]
                mov     edx, [esp+34h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+2Ch]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+24h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0D8h], eax
                mov     [esp+0DCh], ebx
                mov     eax, [esp+0A0h]
                mov     ebx, [esp+0A4h]
                mov     ecx, [esp+20h]
                mov     edx, [esp+18h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+10h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+8]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+4]
                mov     edx, [esp+3Ch]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+34h]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+2Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0E0h], eax
                mov     [esp+0E4h], ebx
                mov     eax, [esp+0A8h]
                mov     ebx, [esp+0ACh]
                mov     ecx, [esp+28h]
                mov     edx, [esp+20h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+18h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+10h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0Ch]
                mov     edx, [esp+4]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+3Ch]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+34h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0E8h], eax
                mov     [esp+0ECh], ebx
                mov     eax, [esp+0B0h]
                mov     ebx, [esp+0B4h]
                mov     ecx, [esp+30h]
                mov     edx, [esp+28h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+20h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+18h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+14h]
                mov     edx, [esp+0Ch]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+4]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+3Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0F0h], eax
                mov     [esp+0F4h], ebx
                mov     eax, [esp+0B8h]
                mov     ebx, [esp+0BCh]
                mov     ecx, [esp+38h]
                mov     edx, [esp+30h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+28h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+20h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+1Ch]
                mov     edx, [esp+14h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+0Ch]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+4]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+0F8h], eax
                mov     [esp+0FCh], ebx
                mov     ebp, [esp+108h]
                mov     edi, [esp+100h]
                mov     eax, [edi+ebp+8]
                mov     ebx, [edi+ebp+0Ch]
                mov     ecx, [esp+80h]
                mov     edx, [esp+0B8h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+0B0h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0A8h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0A4h]
                mov     edx, [esp+9Ch]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+94h]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+8Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     ecx, [esp+88h]
                mov     edx, [esp+80h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+0B8h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+0B0h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+0ACh]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+0A4h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+9Ch]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+94h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+48h], eax
                mov     [esp+4Ch], ebx
                mov     ecx, [esp+90h]
                mov     edx, [esp+88h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+80h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+0B8h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+0B4h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+0ACh]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+0A4h]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+9Ch]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     ecx, [esp+98h]
                mov     edx, [esp+90h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+88h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+80h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+0BCh]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+0B4h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+0ACh]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+0A4h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+58h], eax
                mov     [esp+5Ch], ebx
                mov     ecx, [esp+0A0h]
                mov     edx, [esp+98h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+90h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+88h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+84h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+0BCh]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+0B4h]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+0ACh]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+60h], eax
                mov     [esp+64h], ebx
                mov     ecx, [esp+0A8h]
                mov     edx, [esp+0A0h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+98h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+90h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+8Ch]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+84h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+0BCh]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+0B4h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+68h], eax
                mov     [esp+6Ch], ebx
                mov     ecx, [esp+0B0h]
                mov     edx, [esp+0A8h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+0A0h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+98h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+94h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+8Ch]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+84h]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+0BCh]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+70h], eax
                mov     [esp+74h], ebx
                mov     ecx, [esp+0B8h]
                mov     edx, [esp+0B0h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     eax, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebx, [esi+ecx*8+4]
                mov     ecx, [esp+0A8h]
                mov     edi, [esi+edx+800h]
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                mov     edx, [esp+0A0h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                mov     ecx, [esp+9Ch]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                and     ecx, 0FFh
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                mov     edx, [esp+94h]
                xor     eax, edi
                xor     ebx, ebp
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                mov     ebp, [esi+ecx*8+2004h]
                and     edx, 7F8h
                mov     ecx, [esp+8Ch]
                xor     eax, edi
                shr     ecx, 0Dh
                xor     ebx, ebp
                mov     edi, [esi+edx+2800h]
                and     ecx, 7F8h
                mov     ebp, [esi+edx+2804h]
                xor     eax, edi
                mov     edx, [esp+84h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+78h], eax
                mov     [esp+7Ch], ebx
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                mov     ecx, [esp+0C0h]
                mov     edx, [esp+0F8h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+0F0h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0E8h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0E4h]
                mov     edx, [esp+0DCh]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+0D4h]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0CCh]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                mov     ecx, [esp+0C8h]
                mov     edx, [esp+0C0h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+0F8h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0F0h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0ECh]
                mov     edx, [esp+0E4h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+0DCh]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0D4h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+8], eax
                mov     [esp+0Ch], ebx
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                mov     ecx, [esp+0D0h]
                mov     edx, [esp+0C8h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+0C0h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0F8h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0F4h]
                mov     edx, [esp+0ECh]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+0E4h]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0DCh]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     eax, [esp+58h]
                mov     ebx, [esp+5Ch]
                mov     ecx, [esp+0D8h]
                mov     edx, [esp+0D0h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+0C8h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0C0h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0FCh]
                mov     edx, [esp+0F4h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+0ECh]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0E4h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+18h], eax
                mov     [esp+1Ch], ebx
                mov     eax, [esp+60h]
                mov     ebx, [esp+64h]
                mov     ecx, [esp+0E0h]
                mov     edx, [esp+0D8h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+0D0h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0C8h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0C4h]
                mov     edx, [esp+0FCh]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+0F4h]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0ECh]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+20h], eax
                mov     [esp+24h], ebx
                mov     eax, [esp+68h]
                mov     ebx, [esp+6Ch]
                mov     ecx, [esp+0E8h]
                mov     edx, [esp+0E0h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+0D8h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0D0h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0CCh]
                mov     edx, [esp+0C4h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+0FCh]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0F4h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+28h], eax
                mov     [esp+2Ch], ebx
                mov     eax, [esp+70h]
                mov     ebx, [esp+74h]
                mov     ecx, [esp+0F0h]
                mov     edx, [esp+0E8h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+0E0h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0D8h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0D4h]
                mov     edx, [esp+0CCh]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+0C4h]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0FCh]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+30h], eax
                mov     [esp+34h], ebx
                mov     eax, [esp+78h]
                mov     ebx, [esp+7Ch]
                mov     ecx, [esp+0F8h]
                mov     edx, [esp+0F0h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+4]
                xor     eax, edi
                mov     ecx, [esp+0E8h]
                mov     edi, [esi+edx+800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0E0h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+1000h]
                mov     ebp, [esi+ecx+1004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+1800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+1804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     ecx, [esp+0DCh]
                mov     edx, [esp+0D4h]
                and     ecx, 0FFh
                shr     edx, 5
                mov     edi, [esi+ecx*8+2000h]
                and     edx, 7F8h
                mov     ebp, [esi+ecx*8+2004h]
                xor     eax, edi
                mov     ecx, [esp+0CCh]
                mov     edi, [esi+edx+2800h]
                xor     ebx, ebp
                shr     ecx, 0Dh
                mov     ebp, [esi+edx+2804h]
                and     ecx, 7F8h
                xor     eax, edi
                mov     edx, [esp+0C4h]
                xor     ebx, ebp
                shr     edx, 18h
                mov     edi, [esi+ecx+3000h]
                mov     ebp, [esi+ecx+3004h]
                xor     eax, edi
                mov     edi, [esi+edx*8+3800h]
                xor     ebx, ebp
                mov     ebp, [esi+edx*8+3804h]
                xor     eax, edi
                xor     ebx, ebp
                mov     [esp+38h], eax
                mov     [esp+3Ch], ebx
                mov     ebp, [esp+108h]
                add     ebp, 10h
                cmp     ebp, 50h 
                jnz     @@_loop_start
                mov     ebp, [esp+114h]
                mov     edi, [esp+110h]
                mov     esi, [esp+10Ch]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, [edi]
                mov     edx, [edi+4]
                xor     eax, ecx
                xor     ebx, edx
                mov     ecx, [esi]
                mov     edx, [esi+4]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esi], eax
                mov     [esi+4], ebx
                mov     eax, [esp+8]
                mov     ebx, [esp+0Ch]
                mov     ecx, [edi+8]
                mov     edx, [edi+0Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     ecx, [esi+8]
                mov     edx, [esi+0Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esi+8], eax
                mov     [esi+0Ch], ebx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     ecx, [edi+10h]
                mov     edx, [edi+14h]
                xor     eax, ecx
                xor     ebx, edx
                mov     ecx, [esi+10h]
                mov     edx, [esi+14h]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esi+10h], eax
                mov     [esi+14h], ebx
                mov     eax, [esp+18h]
                mov     ebx, [esp+1Ch]
                mov     ecx, [edi+18h]
                mov     edx, [edi+1Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     ecx, [esi+18h]
                mov     edx, [esi+1Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esi+18h], eax
                mov     [esi+1Ch], ebx
                mov     eax, [esp+20h]
                mov     ebx, [esp+24h]
                mov     ecx, [edi+20h]
                mov     edx, [edi+24h]
                xor     eax, ecx
                xor     ebx, edx
                mov     ecx, [esi+20h]
                mov     edx, [esi+24h]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esi+20h], eax
                mov     [esi+24h], ebx
                mov     eax, [esp+28h]
                mov     ebx, [esp+2Ch]
                mov     ecx, [edi+28h]
                mov     edx, [edi+2Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     ecx, [esi+28h]
                mov     edx, [esi+2Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esi+28h], eax
                mov     [esi+2Ch], ebx
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     ecx, [edi+30h]
                mov     edx, [edi+34h]
                xor     eax, ecx
                xor     ebx, edx
                mov     ecx, [esi+30h]
                mov     edx, [esi+34h]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esi+30h], eax
                mov     [esi+34h], ebx
                mov     eax, [esp+38h]
                mov     ebx, [esp+3Ch]
                mov     ecx, [edi+38h]
                mov     edx, [edi+3Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     ecx, [esi+38h]
                mov     edx, [esi+3Ch]
                xor     eax, ecx
                xor     ebx, edx
                mov     [esi+38h], eax
                mov     [esi+3Ch], ebx
                mov     esp, ebp
                pop  ebp
                pop  edi
                pop  esi
                pop  ebx
end;
{$ENDIF}

{$IFDEF THash_Square_asm}
procedure THash_Square.DoTransform(Buffer: PLongArray);
asm
                push    ebx
                push    esi
                push    edi
                mov     esi, edx
                lea     edi, [eax].THash_Square.FDigest
                push    ebp
                lea     eax, Square_PHIr
                lea     edx, Square_TE
                lea     ecx, Square_SEint

                mov     ebp, esp
                add     esp, 0FFFFFF58h
                and     esp, 0FFFFFFE0h
                mov     [esp+90h], edi
                mov     [esp+94h], esi
                mov     [esp+98h], eax
                mov     [esp+9Ch], edx
                mov     [esp+0A0h], ecx
                mov     [esp+0A4h], ebp
                mov     ecx, [edi]
                mov     edx, [edi+4]
                mov     [esp], ecx
                mov     esi, eax
                mov     [esp+4], edx
                mov     ebp, [edi+8]
                mov     edi, [edi+0Ch]
                mov     [esp+8], ebp
                mov     [esp+0Ch], edi
                mov     eax, ecx
                mov     ebx, edx
                mov     ecx, ebp
                mov     ebp, edi
                xor     eax, 1
                ror     ebp, 8
                xor     eax, ebp
                mov     ebp, 0FFh
                xor     ebx, eax
                mov     [esp+10h], eax
                mov     eax, [esp]
                xor     ecx, ebx
                mov     [esp+14h], ebx
                xor     edi, ecx
                mov     [esp+18h], ecx
                mov     [esp+1Ch], edi
                mov     edx, eax
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+4]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+8]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+4], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+0Ch]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+8], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                mov     ebx, [esi+ebx*4]
                and     ecx, ebp
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                xor     ebx, edx
                mov     [esp+0Ch], ebx
                mov     eax, [esp+10h]
                mov     ebx, [esp+14h]
                mov     ecx, [esp+18h]
                mov     ebp, [esp+1Ch]
                xor     eax, 2
                mov     edi, ebp
                ror     ebp, 8
                xor     eax, ebp
                mov     ebp, 0FFh
                xor     ebx, eax
                mov     [esp+20h], eax
                mov     eax, [esp+10h]
                xor     ecx, ebx
                mov     [esp+24h], ebx
                xor     edi, ecx
                mov     [esp+28h], ecx
                mov     [esp+2Ch], edi
                mov     edx, eax
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+14h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+10h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+18h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+14h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+1Ch]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+18h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                mov     ebx, [esi+ebx*4]
                and     ecx, ebp
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                xor     ebx, edx
                mov     [esp+1Ch], ebx
                mov     eax, [esp+20h]
                mov     ebx, [esp+24h]
                mov     ecx, [esp+28h]
                mov     ebp, [esp+2Ch]
                xor     eax, 4
                mov     edi, ebp
                ror     ebp, 8
                xor     eax, ebp
                mov     ebp, 0FFh
                xor     ebx, eax
                mov     [esp+30h], eax
                mov     eax, [esp+20h]
                xor     ecx, ebx
                mov     [esp+34h], ebx
                xor     edi, ecx
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edi
                mov     edx, eax
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+24h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+20h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+28h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+24h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+2Ch]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+28h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                mov     ebx, [esi+ebx*4]
                and     ecx, ebp
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                xor     ebx, edx
                mov     [esp+2Ch], ebx
                mov     eax, [esp+30h]
                mov     ebx, [esp+34h]
                mov     ecx, [esp+38h]
                mov     ebp, [esp+3Ch]
                xor     eax, 8
                mov     edi, ebp
                ror     ebp, 8
                xor     eax, ebp
                mov     ebp, 0FFh
                xor     ebx, eax
                mov     [esp+40h], eax
                mov     eax, [esp+30h]
                xor     ecx, ebx
                mov     [esp+44h], ebx
                xor     edi, ecx
                mov     [esp+48h], ecx
                mov     [esp+4Ch], edi
                mov     edx, eax
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+34h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+30h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+38h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+34h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+3Ch]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+38h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                mov     ebx, [esi+ebx*4]
                and     ecx, ebp
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                xor     ebx, edx
                mov     [esp+3Ch], ebx
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                mov     ecx, [esp+48h]
                mov     ebp, [esp+4Ch]
                xor     eax, 10h
                mov     edi, ebp
                ror     ebp, 8
                xor     eax, ebp
                mov     ebp, 0FFh
                xor     ebx, eax
                mov     [esp+50h], eax
                mov     eax, [esp+40h]
                xor     ecx, ebx
                mov     [esp+54h], ebx
                xor     edi, ecx
                mov     [esp+58h], ecx
                mov     [esp+5Ch], edi
                mov     edx, eax
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+44h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+40h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+48h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+44h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+4Ch]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+48h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                mov     ebx, [esi+ebx*4]
                and     ecx, ebp
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                xor     ebx, edx
                mov     [esp+4Ch], ebx
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                mov     ecx, [esp+58h]
                mov     ebp, [esp+5Ch]
                xor     eax, 20h
                mov     edi, ebp
                ror     ebp, 8
                xor     eax, ebp
                mov     ebp, 0FFh
                xor     ebx, eax
                mov     [esp+60h], eax
                mov     eax, [esp+50h]
                xor     ecx, ebx
                mov     [esp+64h], ebx
                xor     edi, ecx
                mov     [esp+68h], ecx
                mov     [esp+6Ch], edi
                mov     edx, eax
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+54h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+50h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+58h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+54h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+5Ch]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+58h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                mov     ebx, [esi+ebx*4]
                and     ecx, ebp
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                xor     ebx, edx
                mov     [esp+5Ch], ebx
                mov     eax, [esp+60h]
                mov     ebx, [esp+64h]
                mov     ecx, [esp+68h]
                mov     ebp, [esp+6Ch]
                xor     eax, 40h
                mov     edi, ebp
                ror     ebp, 8
                xor     eax, ebp
                mov     ebp, 0FFh
                xor     ebx, eax
                mov     [esp+70h], eax
                mov     eax, [esp+60h]
                xor     ecx, ebx
                mov     [esp+74h], ebx
                xor     edi, ecx
                mov     [esp+78h], ecx
                mov     [esp+7Ch], edi
                mov     edx, eax
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+64h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+60h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+68h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+64h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+6Ch]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+68h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                mov     ebx, [esi+ebx*4]
                and     ecx, ebp
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                xor     ebx, edx
                mov     [esp+6Ch], ebx
                mov     eax, [esp+70h]
                mov     ebx, [esp+74h]
                mov     ecx, [esp+78h]
                mov     ebp, [esp+7Ch]
                xor     eax, 80h
                mov     edi, ebp
                ror     ebp, 8
                xor     eax, ebp
                mov     ebp, 0FFh
                xor     ebx, eax
                mov     [esp+80h], eax
                mov     eax, [esp+70h]
                xor     ecx, ebx
                mov     [esp+84h], ebx
                xor     edi, ecx
                mov     [esp+88h], ecx
                mov     [esp+8Ch], edi
                mov     edx, eax
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+74h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+70h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+78h]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+74h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                and     ecx, ebp
                mov     ebx, [esi+ebx*4]
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                mov     eax, [esp+7Ch]
                xor     ebx, edx
                mov     edx, eax
                mov     [esp+78h], ebx
                mov     ebx, eax
                mov     ecx, eax
                shr     eax, 8
                and     ebx, ebp
                shr     ecx, 10h
                and     eax, ebp
                mov     ebx, [esi+ebx*4]
                and     ecx, ebp
                shr     edx, 18h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esi+ecx*4+800h]
                xor     ebx, eax
                mov     edx, [esi+edx*4+0C00h]
                xor     ebx, ecx
                xor     ebx, edx
                mov     [esp+7Ch], ebx
                mov     esi, [esp+94h]
                mov     eax, [esp]
                mov     ebx, [esp+4]
                mov     ecx, [esp+8]
                mov     edx, [esp+0Ch]
                mov     edi, [esi]
                mov     ebp, [esi+4]
                xor     eax, edi
                xor     ebx, ebp
                mov     edi, [esi+8]
                mov     ebp, [esi+0Ch]
                mov     [esp], eax
                mov     [esp+4], ebx
                xor     ecx, edi
                xor     edx, ebp
                mov     [esp+8], ecx
                mov     [esp+0Ch], edx
                mov     esi, [esp+9Ch]
                mov     eax, [esp]
                mov     ecx, [esp+4]
                mov     ebx, eax
                mov     edx, ecx
                shr     eax, 8
                mov     edi, [esp+8]
                and     ebx, 0FFh
                mov     ebp, [esp+0Ch]
                shr     ecx, 8
                and     eax, 0FFh
                and     edx, 0FFh
                and     ecx, 0FFh
                mov     ebx, [esi+ebx*4]
                mov     eax, [esi+eax*4]
                mov     edx, [esi+edx*4+400h]
                mov     ecx, [esi+ecx*4+400h]
                xor     ebx, edx
                mov     edx, edi
                shr     edi, 8
                xor     eax, ecx
                mov     ecx, ebp
                and     edx, 0FFh
                shr     ebp, 8
                and     edi, 0FFh
                and     ecx, 0FFh
                mov     edx, [esi+edx*4+800h]
                and     ebp, 0FFh
                mov     edi, [esi+edi*4+800h]
                xor     ebx, edx
                mov     edx, [esp+10h]
                mov     ecx, [esi+ecx*4+0C00h]
                xor     eax, edi
                xor     ebx, ecx
                mov     ecx, [esp+14h]
                xor     ebx, edx
                xor     eax, ecx
                mov     ebp, [esi+ebp*4+0C00h]
                mov     [esp+10h], ebx
                xor     eax, ebp
                mov     [esp+14h], eax
                mov     ecx, [esp]
                mov     edx, [esp+4]
                mov     edi, ecx
                shr     ecx, 10h
                mov     eax, [esp+8]
                mov     ebp, edx
                mov     ebx, [esp+0Ch]
                shr     edx, 10h
                and     ecx, 0FFh
                shr     edi, 18h
                and     edx, 0FFh
                shr     ebp, 18h
                mov     ecx, [esi+ecx*4]
                shr     eax, 10h
                mov     edi, [esi+edi*4]
                shr     ebx, 10h
                mov     edx, [esi+edx*4+400h]
                mov     ebp, [esi+ebp*4+400h]
                xor     ecx, edx
                mov     edx, eax
                xor     edi, ebp
                shr     eax, 8
                mov     ebp, ebx
                and     edx, 0FFh
                and     ebx, 0FFh
                shr     ebp, 8
                mov     eax, [esi+eax*4+800h]
                mov     edx, [esi+edx*4+800h]
                xor     edi, eax
                xor     ecx, edx
                mov     ebx, [esi+ebx*4+0C00h]
                mov     ebp, [esi+ebp*4+0C00h]
                xor     ecx, ebx
                xor     edi, ebp
                mov     eax, [esp+18h]
                mov     ebx, [esp+1Ch]
                xor     ecx, eax
                xor     edi, ebx
                mov     [esp+18h], ecx
                mov     [esp+1Ch], edi
                mov     eax, [esp+10h]
                mov     ecx, [esp+14h]
                mov     ebx, eax
                mov     edx, ecx
                shr     eax, 8
                mov     edi, [esp+18h]
                and     ebx, 0FFh
                mov     ebp, [esp+1Ch]
                shr     ecx, 8
                and     eax, 0FFh
                and     edx, 0FFh
                and     ecx, 0FFh
                mov     ebx, [esi+ebx*4]
                mov     eax, [esi+eax*4]
                mov     edx, [esi+edx*4+400h]
                mov     ecx, [esi+ecx*4+400h]
                xor     ebx, edx
                mov     edx, edi
                shr     edi, 8
                xor     eax, ecx
                mov     ecx, ebp
                and     edx, 0FFh
                shr     ebp, 8
                and     edi, 0FFh
                and     ecx, 0FFh
                mov     edx, [esi+edx*4+800h]
                and     ebp, 0FFh
                mov     edi, [esi+edi*4+800h]
                xor     ebx, edx
                mov     edx, [esp+20h]
                mov     ecx, [esi+ecx*4+0C00h]
                xor     eax, edi
                xor     ebx, ecx
                mov     ecx, [esp+24h]
                xor     ebx, edx
                xor     eax, ecx
                mov     ebp, [esi+ebp*4+0C00h]
                mov     [esp+20h], ebx
                xor     eax, ebp
                mov     [esp+24h], eax
                mov     ecx, [esp+10h]
                mov     edx, [esp+14h]
                mov     edi, ecx
                shr     ecx, 10h
                mov     eax, [esp+18h]
                mov     ebp, edx
                mov     ebx, [esp+1Ch]
                shr     edx, 10h
                and     ecx, 0FFh
                shr     edi, 18h
                and     edx, 0FFh
                shr     ebp, 18h
                mov     ecx, [esi+ecx*4]
                shr     eax, 10h
                mov     edi, [esi+edi*4]
                shr     ebx, 10h
                mov     edx, [esi+edx*4+400h]
                mov     ebp, [esi+ebp*4+400h]
                xor     ecx, edx
                mov     edx, eax
                xor     edi, ebp
                shr     eax, 8
                mov     ebp, ebx
                and     edx, 0FFh
                and     ebx, 0FFh
                shr     ebp, 8
                mov     eax, [esi+eax*4+800h]
                mov     edx, [esi+edx*4+800h]
                xor     edi, eax
                xor     ecx, edx
                mov     ebx, [esi+ebx*4+0C00h]
                mov     ebp, [esi+ebp*4+0C00h]
                xor     ecx, ebx
                xor     edi, ebp
                mov     eax, [esp+28h]
                mov     ebx, [esp+2Ch]
                xor     ecx, eax
                xor     edi, ebx
                mov     [esp+28h], ecx
                mov     [esp+2Ch], edi
                mov     eax, [esp+20h]
                mov     ecx, [esp+24h]
                mov     ebx, eax
                mov     edx, ecx
                shr     eax, 8
                mov     edi, [esp+28h]
                and     ebx, 0FFh
                mov     ebp, [esp+2Ch]
                shr     ecx, 8
                and     eax, 0FFh
                and     edx, 0FFh
                and     ecx, 0FFh
                mov     ebx, [esi+ebx*4]
                mov     eax, [esi+eax*4]
                mov     edx, [esi+edx*4+400h]
                mov     ecx, [esi+ecx*4+400h]
                xor     ebx, edx
                mov     edx, edi
                shr     edi, 8
                xor     eax, ecx
                mov     ecx, ebp
                and     edx, 0FFh
                shr     ebp, 8
                and     edi, 0FFh
                and     ecx, 0FFh
                mov     edx, [esi+edx*4+800h]
                and     ebp, 0FFh
                mov     edi, [esi+edi*4+800h]
                xor     ebx, edx
                mov     edx, [esp+30h]
                mov     ecx, [esi+ecx*4+0C00h]
                xor     eax, edi
                xor     ebx, ecx
                mov     ecx, [esp+34h]
                xor     ebx, edx
                xor     eax, ecx
                mov     ebp, [esi+ebp*4+0C00h]
                mov     [esp+30h], ebx
                xor     eax, ebp
                mov     [esp+34h], eax
                mov     ecx, [esp+20h]
                mov     edx, [esp+24h]
                mov     edi, ecx
                shr     ecx, 10h
                mov     eax, [esp+28h]
                mov     ebp, edx
                mov     ebx, [esp+2Ch]
                shr     edx, 10h
                and     ecx, 0FFh
                shr     edi, 18h
                and     edx, 0FFh
                shr     ebp, 18h
                mov     ecx, [esi+ecx*4]
                shr     eax, 10h
                mov     edi, [esi+edi*4]
                shr     ebx, 10h
                mov     edx, [esi+edx*4+400h]
                mov     ebp, [esi+ebp*4+400h]
                xor     ecx, edx
                mov     edx, eax
                xor     edi, ebp
                shr     eax, 8
                mov     ebp, ebx
                and     edx, 0FFh
                and     ebx, 0FFh
                shr     ebp, 8
                mov     eax, [esi+eax*4+800h]
                mov     edx, [esi+edx*4+800h]
                xor     edi, eax
                xor     ecx, edx
                mov     ebx, [esi+ebx*4+0C00h]
                mov     ebp, [esi+ebp*4+0C00h]
                xor     ecx, ebx
                xor     edi, ebp
                mov     eax, [esp+38h]
                mov     ebx, [esp+3Ch]
                xor     ecx, eax
                xor     edi, ebx
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edi
                mov     eax, [esp+30h]
                mov     ecx, [esp+34h]
                mov     ebx, eax
                mov     edx, ecx
                shr     eax, 8
                mov     edi, [esp+38h]
                and     ebx, 0FFh
                mov     ebp, [esp+3Ch]
                shr     ecx, 8
                and     eax, 0FFh
                and     edx, 0FFh
                and     ecx, 0FFh
                mov     ebx, [esi+ebx*4]
                mov     eax, [esi+eax*4]
                mov     edx, [esi+edx*4+400h]
                mov     ecx, [esi+ecx*4+400h]
                xor     ebx, edx
                mov     edx, edi
                shr     edi, 8
                xor     eax, ecx
                mov     ecx, ebp
                and     edx, 0FFh
                shr     ebp, 8
                and     edi, 0FFh
                and     ecx, 0FFh
                mov     edx, [esi+edx*4+800h]
                and     ebp, 0FFh
                mov     edi, [esi+edi*4+800h]
                xor     ebx, edx
                mov     edx, [esp+40h]
                mov     ecx, [esi+ecx*4+0C00h]
                xor     eax, edi
                xor     ebx, ecx
                mov     ecx, [esp+44h]
                xor     ebx, edx
                xor     eax, ecx
                mov     ebp, [esi+ebp*4+0C00h]
                mov     [esp+40h], ebx
                xor     eax, ebp
                mov     [esp+44h], eax
                mov     ecx, [esp+30h]
                mov     edx, [esp+34h]
                mov     edi, ecx
                shr     ecx, 10h
                mov     eax, [esp+38h]
                mov     ebp, edx
                mov     ebx, [esp+3Ch]
                shr     edx, 10h
                and     ecx, 0FFh
                shr     edi, 18h
                and     edx, 0FFh
                shr     ebp, 18h
                mov     ecx, [esi+ecx*4]
                shr     eax, 10h
                mov     edi, [esi+edi*4]
                shr     ebx, 10h
                mov     edx, [esi+edx*4+400h]
                mov     ebp, [esi+ebp*4+400h]
                xor     ecx, edx
                mov     edx, eax
                xor     edi, ebp
                shr     eax, 8
                mov     ebp, ebx
                and     edx, 0FFh
                and     ebx, 0FFh
                shr     ebp, 8
                mov     eax, [esi+eax*4+800h]
                mov     edx, [esi+edx*4+800h]
                xor     edi, eax
                xor     ecx, edx
                mov     ebx, [esi+ebx*4+0C00h]
                mov     ebp, [esi+ebp*4+0C00h]
                xor     ecx, ebx
                xor     edi, ebp
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                xor     ecx, eax
                xor     edi, ebx
                mov     [esp+48h], ecx
                mov     [esp+4Ch], edi
                mov     eax, [esp+40h]
                mov     ecx, [esp+44h]
                mov     ebx, eax
                mov     edx, ecx
                shr     eax, 8
                mov     edi, [esp+48h]
                and     ebx, 0FFh
                mov     ebp, [esp+4Ch]
                shr     ecx, 8
                and     eax, 0FFh
                and     edx, 0FFh
                and     ecx, 0FFh
                mov     ebx, [esi+ebx*4]
                mov     eax, [esi+eax*4]
                mov     edx, [esi+edx*4+400h]
                mov     ecx, [esi+ecx*4+400h]
                xor     ebx, edx
                mov     edx, edi
                shr     edi, 8
                xor     eax, ecx
                mov     ecx, ebp
                and     edx, 0FFh
                shr     ebp, 8
                and     edi, 0FFh
                and     ecx, 0FFh
                mov     edx, [esi+edx*4+800h]
                and     ebp, 0FFh
                mov     edi, [esi+edi*4+800h]
                xor     ebx, edx
                mov     edx, [esp+50h]
                mov     ecx, [esi+ecx*4+0C00h]
                xor     eax, edi
                xor     ebx, ecx
                mov     ecx, [esp+54h]
                xor     ebx, edx
                xor     eax, ecx
                mov     ebp, [esi+ebp*4+0C00h]
                mov     [esp+50h], ebx
                xor     eax, ebp
                mov     [esp+54h], eax
                mov     ecx, [esp+40h]
                mov     edx, [esp+44h]
                mov     edi, ecx
                shr     ecx, 10h
                mov     eax, [esp+48h]
                mov     ebp, edx
                mov     ebx, [esp+4Ch]
                shr     edx, 10h
                and     ecx, 0FFh
                shr     edi, 18h
                and     edx, 0FFh
                shr     ebp, 18h
                mov     ecx, [esi+ecx*4]
                shr     eax, 10h
                mov     edi, [esi+edi*4]
                shr     ebx, 10h
                mov     edx, [esi+edx*4+400h]
                mov     ebp, [esi+ebp*4+400h]
                xor     ecx, edx
                mov     edx, eax
                xor     edi, ebp
                shr     eax, 8
                mov     ebp, ebx
                and     edx, 0FFh
                and     ebx, 0FFh
                shr     ebp, 8
                mov     eax, [esi+eax*4+800h]
                mov     edx, [esi+edx*4+800h]
                xor     edi, eax
                xor     ecx, edx
                mov     ebx, [esi+ebx*4+0C00h]
                mov     ebp, [esi+ebp*4+0C00h]
                xor     ecx, ebx
                xor     edi, ebp
                mov     eax, [esp+58h]
                mov     ebx, [esp+5Ch]
                xor     ecx, eax
                xor     edi, ebx
                mov     [esp+58h], ecx
                mov     [esp+5Ch], edi
                mov     eax, [esp+50h]
                mov     ecx, [esp+54h]
                mov     ebx, eax
                mov     edx, ecx
                shr     eax, 8
                mov     edi, [esp+58h]
                and     ebx, 0FFh
                mov     ebp, [esp+5Ch]
                shr     ecx, 8
                and     eax, 0FFh
                and     edx, 0FFh
                and     ecx, 0FFh
                mov     ebx, [esi+ebx*4]
                mov     eax, [esi+eax*4]
                mov     edx, [esi+edx*4+400h]
                mov     ecx, [esi+ecx*4+400h]
                xor     ebx, edx
                mov     edx, edi
                shr     edi, 8
                xor     eax, ecx
                mov     ecx, ebp
                and     edx, 0FFh
                shr     ebp, 8
                and     edi, 0FFh
                and     ecx, 0FFh
                mov     edx, [esi+edx*4+800h]
                and     ebp, 0FFh
                mov     edi, [esi+edi*4+800h]
                xor     ebx, edx
                mov     edx, [esp+60h]
                mov     ecx, [esi+ecx*4+0C00h]
                xor     eax, edi
                xor     ebx, ecx
                mov     ecx, [esp+64h]
                xor     ebx, edx
                xor     eax, ecx
                mov     ebp, [esi+ebp*4+0C00h]
                mov     [esp+60h], ebx
                xor     eax, ebp
                mov     [esp+64h], eax
                mov     ecx, [esp+50h]
                mov     edx, [esp+54h]
                mov     edi, ecx
                shr     ecx, 10h
                mov     eax, [esp+58h]
                mov     ebp, edx
                mov     ebx, [esp+5Ch]
                shr     edx, 10h
                and     ecx, 0FFh
                shr     edi, 18h
                and     edx, 0FFh
                shr     ebp, 18h
                mov     ecx, [esi+ecx*4]
                shr     eax, 10h
                mov     edi, [esi+edi*4]
                shr     ebx, 10h
                mov     edx, [esi+edx*4+400h]
                mov     ebp, [esi+ebp*4+400h]
                xor     ecx, edx
                mov     edx, eax
                xor     edi, ebp
                shr     eax, 8
                mov     ebp, ebx
                and     edx, 0FFh
                and     ebx, 0FFh
                shr     ebp, 8
                mov     eax, [esi+eax*4+800h]
                mov     edx, [esi+edx*4+800h]
                xor     edi, eax
                xor     ecx, edx
                mov     ebx, [esi+ebx*4+0C00h]
                mov     ebp, [esi+ebp*4+0C00h]
                xor     ecx, ebx
                xor     edi, ebp
                mov     eax, [esp+68h]
                mov     ebx, [esp+6Ch]
                xor     ecx, eax
                xor     edi, ebx
                mov     [esp+68h], ecx
                mov     [esp+6Ch], edi
                mov     eax, [esp+60h]
                mov     ecx, [esp+64h]
                mov     ebx, eax
                mov     edx, ecx
                shr     eax, 8
                mov     edi, [esp+68h]
                and     ebx, 0FFh
                mov     ebp, [esp+6Ch]
                shr     ecx, 8
                and     eax, 0FFh
                and     edx, 0FFh
                and     ecx, 0FFh
                mov     ebx, [esi+ebx*4]
                mov     eax, [esi+eax*4]
                mov     edx, [esi+edx*4+400h]
                mov     ecx, [esi+ecx*4+400h]
                xor     ebx, edx
                mov     edx, edi
                shr     edi, 8
                xor     eax, ecx
                mov     ecx, ebp
                and     edx, 0FFh
                shr     ebp, 8
                and     edi, 0FFh
                and     ecx, 0FFh
                mov     edx, [esi+edx*4+800h]
                and     ebp, 0FFh
                mov     edi, [esi+edi*4+800h]
                xor     ebx, edx
                mov     edx, [esp+70h]
                mov     ecx, [esi+ecx*4+0C00h]
                xor     eax, edi
                xor     ebx, ecx
                mov     ecx, [esp+74h]
                xor     ebx, edx
                xor     eax, ecx
                mov     ebp, [esi+ebp*4+0C00h]
                mov     [esp+70h], ebx
                xor     eax, ebp
                mov     [esp+74h], eax
                mov     ecx, [esp+60h]
                mov     edx, [esp+64h]
                mov     edi, ecx
                shr     ecx, 10h
                mov     eax, [esp+68h]
                mov     ebp, edx
                mov     ebx, [esp+6Ch]
                shr     edx, 10h
                and     ecx, 0FFh
                shr     edi, 18h
                and     edx, 0FFh
                shr     ebp, 18h
                mov     ecx, [esi+ecx*4]
                shr     eax, 10h
                mov     edi, [esi+edi*4]
                shr     ebx, 10h
                mov     edx, [esi+edx*4+400h]
                mov     ebp, [esi+ebp*4+400h]
                xor     ecx, edx
                mov     edx, eax
                xor     edi, ebp
                shr     eax, 8
                mov     ebp, ebx
                and     edx, 0FFh
                and     ebx, 0FFh
                shr     ebp, 8
                mov     eax, [esi+eax*4+800h]
                mov     edx, [esi+edx*4+800h]
                xor     edi, eax
                xor     ecx, edx
                mov     ebx, [esi+ebx*4+0C00h]
                mov     ebp, [esi+ebp*4+0C00h]
                xor     ecx, ebx
                xor     edi, ebp
                mov     eax, [esp+78h]
                mov     ebx, [esp+7Ch]
                xor     ecx, eax
                xor     edi, ebx
                mov     [esp+78h], ecx
                mov     [esp+7Ch], edi
                mov     esi, [esp+0A0h]
                mov     eax, [esp+70h]
                mov     ebx, [esp+74h]
                mov     ecx, eax
                mov     edi, [esp+78h]
                shr     eax, 8
                mov     ebp, [esp+7Ch]
                mov     edx, ebx
                and     ecx, 0FFh
                and     eax, 0FFh
                shr     ebx, 8
                and     edx, 0FFh
                and     ebx, 0FFh
                mov     ecx, [esi+ecx*4]
                mov     edx, [esi+edx*4]
                mov     eax, [esi+eax*4]
                shl     edx, 8
                mov     ebx, [esi+ebx*4]
                shl     ebx, 8
                xor     ecx, edx
                mov     edx, edi
                xor     eax, ebx
                shr     edi, 8
                mov     ebx, ebp
                shr     ebp, 8
                and     edx, 0FFh
                and     edi, 0FFh
                and     ebx, 0FFh
                and     ebp, 0FFh
                mov     edx, [esi+edx*4]
                mov     edi, [esi+edi*4]
                mov     ebx, [esi+ebx*4]
                shl     edx, 10h
                mov     ebp, [esi+ebp*4]
                shl     edi, 10h
                xor     ecx, edx
                shl     ebx, 18h
                xor     eax, edi
                shl     ebp, 18h
                mov     edx, [esp+94h]
                xor     ecx, ebx
                xor     eax, ebp
                mov     ebx, [edx]
                mov     ebp, [edx+4]
                mov     edx, [esp+90h]
                xor     ecx, ebx
                xor     eax, ebp
                mov     ebx, [esp+80h]
                mov     ebp, [esp+84h]
                xor     ecx, ebx
                xor     eax, ebp
                mov     [edx], ecx
                mov     [edx+4], eax
                mov     eax, [esp+70h]
                mov     ebx, [esp+74h]
                mov     ecx, eax
                shr     eax, 10h
                mov     edi, [esp+78h]
                mov     ebp, [esp+7Ch]
                mov     edx, ebx
                shr     ebx, 10h
                and     eax, 0FFh
                shr     ecx, 18h
                and     ebx, 0FFh
                shr     edx, 18h
                mov     eax, [esi+eax*4]
                mov     ebx, [esi+ebx*4]
                mov     ecx, [esi+ecx*4]
                shl     ebx, 8
                mov     edx, [esi+edx*4]
                shl     edx, 8
                xor     eax, ebx
                mov     ebx, edi
                xor     ecx, edx
                shr     edi, 10h
                mov     edx, ebp
                shr     ebp, 10h
                and     edi, 0FFh
                shr     ebx, 18h
                and     ebp, 0FFh
                shr     edx, 18h
                mov     edi, [esi+edi*4]
                mov     ebx, [esi+ebx*4]
                mov     ebp, [esi+ebp*4]
                shl     edi, 10h
                mov     edx, [esi+edx*4]
                shl     ebp, 18h
                xor     eax, edi
                shl     ebx, 10h
                xor     eax, ebp
                shl     edx, 18h
                mov     edi, [esp+94h]
                xor     ecx, ebx
                mov     ebx, [esp+88h]
                xor     ecx, edx
                mov     edx, [esp+8Ch]
                xor     eax, ebx
                mov     ebx, [edi+8]
                mov     edi, [edi+0Ch]
                xor     ecx, edx
                mov     edx, [esp+90h]
                mov     ebp, [esp+0A4h]
                xor     eax, ebx
                mov     esp, ebp
                xor     ecx, edi
                mov     [edx+8], eax
                mov     [edx+0Ch], ecx
                pop  ebp
                pop  edi
                pop  esi
                pop  ebx
end;
{$ENDIF}

{$IFDEF THash_Snefru128_asm}
procedure THash_Snefru128.DoTransform(Buffer: PLongArray);
begin
  SwapLongBuffer(Buffer[0], FDigest[4], 12);
  asm
                push    ebx
                mov     eax, Self
                push    esi
                push    edi
                lea     edi, [eax].THash_Snefru128.FDigest
                push    ebp
                lea     esi, Snefru_Data
                mov     ecx, [eax].THash_Snefru128.FSecurity_Level

                mov     ebp, esp
                add     esp, 0FFFFFF94h
                and     esp, 0FFFFFFE0h
                mov     [esp+60h], edi
                mov     [esp+68h], ebp
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     ebp, [edi+8]
                mov     edx, [edi+0Ch]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     [esp+8], ebp
                mov     [esp+0Ch], edx
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     [esp+48h], ebp
                mov     [esp+4Ch], edx
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     ebp, [edi+18h]
                mov     edx, [edi+1Ch]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     [esp+18h], ebp
                mov     [esp+1Ch], edx
                mov     eax, [edi+20h]
                mov     ebx, [edi+24h]
                mov     ebp, [edi+28h]
                mov     edx, [edi+2Ch]
                mov     [esp+20h], eax
                mov     [esp+24h], ebx
                mov     [esp+28h], ebp
                mov     [esp+2Ch], edx
                mov     eax, [edi+30h]
                mov     ebx, [edi+34h]
                mov     ebp, [edi+38h]
                mov     edx, [edi+3Ch]
                mov     [esp+30h], eax
                mov     [esp+34h], ebx
                mov     [esp+38h], ebp
                mov     [esp+3Ch], edx

@@_level_loop:
                mov     [esp+64h], ecx
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, 0FFh
                mov     eax, [esp+3Ch]
                mov     ebx, [esi+ebx*4]
                mov     edx, [esp+8]
                xor     ecx, ebx
                xor     eax, ebx
                mov     ebp, ecx
                and     ecx, 0FFh
                mov     [esp+3Ch], eax
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+0Ch]
                xor     edx, ecx
                xor     edi, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     [esp], edi
                mov     edx, [esi+edx*4+400h]
                mov     edi, [esp+10h]
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                mov     ebx, [esi+ebx*4+400h]
                mov     eax, [esp+14h]
                mov     [esp+4], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+18h]
                ror     ecx, 10h
                mov     edi, [esi+edi*4]
                mov     [esp+8], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 10h
                mov     eax, [esi+eax*4]
                mov     ecx, [esp+1Ch]
                mov     [esp+0Ch], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+20h]
                ror     ebx, 10h
                mov     ebp, [esi+ebp*4+400h]
                mov     [esp+10h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 10h
                mov     ecx, [esi+ecx*4+400h]
                mov     ebx, [esp+24h]
                mov     [esp+14h], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp+28h]
                ror     eax, 10h
                mov     edx, [esi+edx*4]
                mov     [esp+18h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                mov     ebx, [esi+ebx*4]
                mov     eax, [esp+2Ch]
                mov     [esp+1Ch], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+30h]
                ror     ecx, 10h
                mov     edi, [esi+edi*4+400h]
                mov     [esp+20h], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 10h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esp+34h]
                mov     [esp+24h], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+38h]
                ror     ebx, 10h
                mov     ebp, [esi+ebp*4]
                mov     [esp+28h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 10h
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+3Ch]
                mov     [esp+2Ch], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp]
                ror     eax, 10h
                mov     edx, [esi+edx*4+400h]
                mov     [esp+30h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                ror     edx, 10h
                mov     ebx, [esi+ebx*4+400h]
                mov     [esp+34h], ebp
                xor     edi, ebx
                xor     ecx, ebx
                ror     edi, 10h
                ror     ecx, 10h
                mov     [esp], edi
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, 0FFh
                mov     eax, [esp+3Ch]
                mov     ebx, [esi+ebx*4]
                mov     edx, [esp+8]
                xor     ecx, ebx
                xor     eax, ebx
                mov     ebp, ecx
                and     ecx, 0FFh
                mov     [esp+3Ch], eax
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+0Ch]
                xor     edx, ecx
                xor     edi, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     [esp], edi
                mov     edx, [esi+edx*4+400h]
                mov     edi, [esp+10h]
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 8
                mov     ebx, [esi+ebx*4+400h]
                mov     eax, [esp+14h]
                mov     [esp+4], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+18h]
                ror     ecx, 8
                mov     edi, [esi+edi*4]
                mov     [esp+8], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 8
                mov     eax, [esi+eax*4]
                mov     ecx, [esp+1Ch]
                mov     [esp+0Ch], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+20h]
                ror     ebx, 8
                mov     ebp, [esi+ebp*4+400h]
                mov     [esp+10h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 8
                mov     ecx, [esi+ecx*4+400h]
                mov     ebx, [esp+24h]
                mov     [esp+14h], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp+28h]
                ror     eax, 8
                mov     edx, [esi+edx*4]
                mov     [esp+18h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 8
                mov     ebx, [esi+ebx*4]
                mov     eax, [esp+2Ch]
                mov     [esp+1Ch], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+30h]
                ror     ecx, 8
                mov     edi, [esi+edi*4+400h]
                mov     [esp+20h], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 8
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esp+34h]
                mov     [esp+24h], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+38h]
                ror     ebx, 8
                mov     ebp, [esi+ebp*4]
                mov     [esp+28h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 8
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+3Ch]
                mov     [esp+2Ch], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp]
                ror     eax, 8
                mov     edx, [esi+edx*4+400h]
                mov     [esp+30h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 8
                ror     edx, 8
                mov     ebx, [esi+ebx*4+400h]
                mov     [esp+34h], ebp
                xor     edi, ebx
                xor     ecx, ebx
                ror     edi, 8
                ror     ecx, 8
                mov     [esp], edi
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, 0FFh
                mov     eax, [esp+3Ch]
                mov     ebx, [esi+ebx*4]
                mov     edx, [esp+8]
                xor     ecx, ebx
                xor     eax, ebx
                mov     ebp, ecx
                and     ecx, 0FFh
                mov     [esp+3Ch], eax
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+0Ch]
                xor     edx, ecx
                xor     edi, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     [esp], edi
                mov     edx, [esi+edx*4+400h]
                mov     edi, [esp+10h]
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                mov     ebx, [esi+ebx*4+400h]
                mov     eax, [esp+14h]
                mov     [esp+4], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+18h]
                ror     ecx, 10h
                mov     edi, [esi+edi*4]
                mov     [esp+8], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 10h
                mov     eax, [esi+eax*4]
                mov     ecx, [esp+1Ch]
                mov     [esp+0Ch], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+20h]
                ror     ebx, 10h
                mov     ebp, [esi+ebp*4+400h]
                mov     [esp+10h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 10h
                mov     ecx, [esi+ecx*4+400h]
                mov     ebx, [esp+24h]
                mov     [esp+14h], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp+28h]
                ror     eax, 10h
                mov     edx, [esi+edx*4]
                mov     [esp+18h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                mov     ebx, [esi+ebx*4]
                mov     eax, [esp+2Ch]
                mov     [esp+1Ch], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+30h]
                ror     ecx, 10h
                mov     edi, [esi+edi*4+400h]
                mov     [esp+20h], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 10h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esp+34h]
                mov     [esp+24h], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+38h]
                ror     ebx, 10h
                mov     ebp, [esi+ebp*4]
                mov     [esp+28h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 10h
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+3Ch]
                mov     [esp+2Ch], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp]
                ror     eax, 10h
                mov     edx, [esi+edx*4+400h]
                mov     [esp+30h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                ror     edx, 10h
                mov     ebx, [esi+ebx*4+400h]
                mov     [esp+34h], ebp
                xor     edi, ebx
                xor     ecx, ebx
                ror     edi, 10h
                ror     ecx, 10h
                mov     [esp], edi
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, 0FFh
                mov     eax, [esp+3Ch]
                mov     ebx, [esi+ebx*4]
                mov     edx, [esp+8]
                xor     ecx, ebx
                xor     eax, ebx
                mov     ebp, ecx
                and     ecx, 0FFh
                mov     [esp+3Ch], eax
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+0Ch]
                xor     edx, ecx
                xor     edi, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     [esp], edi
                mov     edx, [esi+edx*4+400h]
                mov     edi, [esp+10h]
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                rol     ebp, 8
                mov     ebx, [esi+ebx*4+400h]
                mov     eax, [esp+14h]
                mov     [esp+4], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+18h]
                rol     ecx, 8
                mov     edi, [esi+edi*4]
                mov     [esp+8], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                rol     edx, 8
                mov     eax, [esi+eax*4]
                mov     ecx, [esp+1Ch]
                mov     [esp+0Ch], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+20h]
                rol     ebx, 8
                mov     ebp, [esi+ebp*4+400h]
                mov     [esp+10h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                rol     edi, 8
                mov     ecx, [esi+ecx*4+400h]
                mov     ebx, [esp+24h]
                mov     [esp+14h], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp+28h]
                rol     eax, 8
                mov     edx, [esi+edx*4]
                mov     [esp+18h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                rol     ebp, 8
                mov     ebx, [esi+ebx*4]
                mov     eax, [esp+2Ch]
                mov     [esp+1Ch], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+30h]
                rol     ecx, 8
                mov     edi, [esi+edi*4+400h]
                mov     [esp+20h], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                rol     edx, 8
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esp+34h]
                mov     [esp+24h], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+38h]
                rol     ebx, 8
                mov     ebp, [esi+ebp*4]
                mov     [esp+28h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                rol     edi, 8
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+3Ch]
                mov     [esp+2Ch], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp]
                rol     eax, 8
                mov     edx, [esi+edx*4+400h]
                mov     [esp+30h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                rol     ebp, 8
                rol     edx, 8
                mov     ebx, [esi+ebx*4+400h]
                mov     [esp+34h], ebp
                xor     edi, ebx
                xor     ecx, ebx
                rol     edi, 8
                rol     ecx, 8
                mov     [esp], edi
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     ecx, [esp+64h]
                add     esi, 800h
                dec     ecx
                jnz     @@_level_loop
                mov     edi, [esp+60h]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                mov     ecx, [esp+3Ch]
                mov     edx, [esp+38h]
                xor     eax, ecx
                xor     ebx, edx
                mov     [edi], eax
                mov     [edi+4], ebx
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                mov     ecx, [esp+34h]
                mov     edx, [esp+30h]
                xor     eax, ecx
                xor     ebx, edx
                mov     [edi+8], eax
                mov     [edi+0Ch], ebx
                mov     ebp, [esp+68h]
                mov     esp, ebp


                pop  ebp
                pop  edi
                pop  esi
                pop  ebx
  end;
end;
{$ENDIF}

{$IFDEF THash_Snefru256_asm}
procedure THash_Snefru256.DoTransform(Buffer: PLongArray);
begin
  SwapLongBuffer(Buffer[0], FDigest[8], 8);
  asm
                push    ebx
                mov     eax, Self
                push    esi
                push    edi
                lea     edi, [eax].THash_Snefru256.FDigest
                push    ebp
                lea     esi, Snefru_Data
                mov     ecx, [eax].THash_Snefru256.FSecurity_Level
                mov     ebp, esp
                add     esp, 0FFFFFF94h
                and     esp, 0FFFFFFE0h
                mov     [esp+60h], edi
                mov     [esp+68h], ebp
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     ebp, [edi+8]
                mov     edx, [edi+0Ch]
                mov     [esp], eax
                mov     [esp+4], ebx
                mov     [esp+8], ebp
                mov     [esp+0Ch], edx
                mov     [esp+40h], eax
                mov     [esp+44h], ebx
                mov     [esp+48h], ebp
                mov     [esp+4Ch], edx
                mov     eax, [edi+10h]
                mov     ebx, [edi+14h]
                mov     ebp, [edi+18h]
                mov     edx, [edi+1Ch]
                mov     [esp+10h], eax
                mov     [esp+14h], ebx
                mov     [esp+18h], ebp
                mov     [esp+1Ch], edx
                mov     [esp+50h], eax
                mov     [esp+54h], ebx
                mov     [esp+58h], ebp
                mov     [esp+5Ch], edx
                mov     eax, [edi+20h]
                mov     ebx, [edi+24h]
                mov     ebp, [edi+28h]
                mov     edx, [edi+2Ch]
                mov     [esp+20h], eax
                mov     [esp+24h], ebx
                mov     [esp+28h], ebp
                mov     [esp+2Ch], edx
                mov     eax, [edi+30h]
                mov     ebx, [edi+34h]
                mov     ebp, [edi+38h]
                mov     edx, [edi+3Ch]
                mov     [esp+30h], eax
                mov     [esp+34h], ebx
                mov     [esp+38h], ebp
                mov     [esp+3Ch], edx

@@_level_loop:
                mov     [esp+64h], ecx
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, 0FFh
                mov     eax, [esp+3Ch]
                mov     ebx, [esi+ebx*4]
                mov     edx, [esp+8]
                xor     ecx, ebx
                xor     eax, ebx
                mov     ebp, ecx
                and     ecx, 0FFh
                mov     [esp+3Ch], eax
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+0Ch]
                xor     edx, ecx
                xor     edi, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     [esp], edi
                mov     edx, [esi+edx*4+400h]
                mov     edi, [esp+10h]
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                mov     ebx, [esi+ebx*4+400h]
                mov     eax, [esp+14h]
                mov     [esp+4], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+18h]
                ror     ecx, 10h
                mov     edi, [esi+edi*4]
                mov     [esp+8], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 10h
                mov     eax, [esi+eax*4]
                mov     ecx, [esp+1Ch]
                mov     [esp+0Ch], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+20h]
                ror     ebx, 10h
                mov     ebp, [esi+ebp*4+400h]
                mov     [esp+10h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 10h
                mov     ecx, [esi+ecx*4+400h]
                mov     ebx, [esp+24h]
                mov     [esp+14h], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp+28h]
                ror     eax, 10h
                mov     edx, [esi+edx*4]
                mov     [esp+18h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                mov     ebx, [esi+ebx*4]
                mov     eax, [esp+2Ch]
                mov     [esp+1Ch], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+30h]
                ror     ecx, 10h
                mov     edi, [esi+edi*4+400h]
                mov     [esp+20h], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 10h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esp+34h]
                mov     [esp+24h], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+38h]
                ror     ebx, 10h
                mov     ebp, [esi+ebp*4]
                mov     [esp+28h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 10h
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+3Ch]
                mov     [esp+2Ch], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp]
                ror     eax, 10h
                mov     edx, [esi+edx*4+400h]
                mov     [esp+30h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                ror     edx, 10h
                mov     ebx, [esi+ebx*4+400h]
                mov     [esp+34h], ebp
                xor     edi, ebx
                xor     ecx, ebx
                ror     edi, 10h
                ror     ecx, 10h
                mov     [esp], edi
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, 0FFh
                mov     eax, [esp+3Ch]
                mov     ebx, [esi+ebx*4]
                mov     edx, [esp+8]
                xor     ecx, ebx
                xor     eax, ebx
                mov     ebp, ecx
                and     ecx, 0FFh
                mov     [esp+3Ch], eax
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+0Ch]
                xor     edx, ecx
                xor     edi, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     [esp], edi
                mov     edx, [esi+edx*4+400h]
                mov     edi, [esp+10h]
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 8
                mov     ebx, [esi+ebx*4+400h]
                mov     eax, [esp+14h]
                mov     [esp+4], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+18h]
                ror     ecx, 8
                mov     edi, [esi+edi*4]
                mov     [esp+8], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 8
                mov     eax, [esi+eax*4]
                mov     ecx, [esp+1Ch]
                mov     [esp+0Ch], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+20h]
                ror     ebx, 8
                mov     ebp, [esi+ebp*4+400h]
                mov     [esp+10h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 8
                mov     ecx, [esi+ecx*4+400h]
                mov     ebx, [esp+24h]
                mov     [esp+14h], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp+28h]
                ror     eax, 8
                mov     edx, [esi+edx*4]
                mov     [esp+18h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 8
                mov     ebx, [esi+ebx*4]
                mov     eax, [esp+2Ch]
                mov     [esp+1Ch], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+30h]
                ror     ecx, 8
                mov     edi, [esi+edi*4+400h]
                mov     [esp+20h], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 8
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esp+34h]
                mov     [esp+24h], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+38h]
                ror     ebx, 8
                mov     ebp, [esi+ebp*4]
                mov     [esp+28h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 8
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+3Ch]
                mov     [esp+2Ch], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp]
                ror     eax, 8
                mov     edx, [esi+edx*4+400h]
                mov     [esp+30h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 8
                ror     edx, 8
                mov     ebx, [esi+ebx*4+400h]
                mov     [esp+34h], ebp
                xor     edi, ebx
                xor     ecx, ebx
                ror     edi, 8
                ror     ecx, 8
                mov     [esp], edi
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, 0FFh
                mov     eax, [esp+3Ch]
                mov     ebx, [esi+ebx*4]
                mov     edx, [esp+8]
                xor     ecx, ebx
                xor     eax, ebx
                mov     ebp, ecx
                and     ecx, 0FFh
                mov     [esp+3Ch], eax
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+0Ch]
                xor     edx, ecx
                xor     edi, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     [esp], edi
                mov     edx, [esi+edx*4+400h]
                mov     edi, [esp+10h]
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                mov     ebx, [esi+ebx*4+400h]
                mov     eax, [esp+14h]
                mov     [esp+4], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+18h]
                ror     ecx, 10h
                mov     edi, [esi+edi*4]
                mov     [esp+8], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 10h
                mov     eax, [esi+eax*4]
                mov     ecx, [esp+1Ch]
                mov     [esp+0Ch], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+20h]
                ror     ebx, 10h
                mov     ebp, [esi+ebp*4+400h]
                mov     [esp+10h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 10h
                mov     ecx, [esi+ecx*4+400h]
                mov     ebx, [esp+24h]
                mov     [esp+14h], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp+28h]
                ror     eax, 10h
                mov     edx, [esi+edx*4]
                mov     [esp+18h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                mov     ebx, [esi+ebx*4]
                mov     eax, [esp+2Ch]
                mov     [esp+1Ch], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+30h]
                ror     ecx, 10h
                mov     edi, [esi+edi*4+400h]
                mov     [esp+20h], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                ror     edx, 10h
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esp+34h]
                mov     [esp+24h], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+38h]
                ror     ebx, 10h
                mov     ebp, [esi+ebp*4]
                mov     [esp+28h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                ror     edi, 10h
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+3Ch]
                mov     [esp+2Ch], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp]
                ror     eax, 10h
                mov     edx, [esi+edx*4+400h]
                mov     [esp+30h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                ror     ebp, 10h
                ror     edx, 10h
                mov     ebx, [esi+ebx*4+400h]
                mov     [esp+34h], ebp
                xor     edi, ebx
                xor     ecx, ebx
                ror     edi, 10h
                ror     ecx, 10h
                mov     [esp], edi
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     ebx, [esp]
                mov     ecx, [esp+4]
                mov     edi, ebx
                and     ebx, 0FFh
                mov     eax, [esp+3Ch]
                mov     ebx, [esi+ebx*4]
                mov     edx, [esp+8]
                xor     ecx, ebx
                xor     eax, ebx
                mov     ebp, ecx
                and     ecx, 0FFh
                mov     [esp+3Ch], eax
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+0Ch]
                xor     edx, ecx
                xor     edi, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     [esp], edi
                mov     edx, [esi+edx*4+400h]
                mov     edi, [esp+10h]
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                rol     ebp, 8
                mov     ebx, [esi+ebx*4+400h]
                mov     eax, [esp+14h]
                mov     [esp+4], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+18h]
                rol     ecx, 8
                mov     edi, [esi+edi*4]
                mov     [esp+8], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                rol     edx, 8
                mov     eax, [esi+eax*4]
                mov     ecx, [esp+1Ch]
                mov     [esp+0Ch], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+20h]
                rol     ebx, 8
                mov     ebp, [esi+ebp*4+400h]
                mov     [esp+10h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                rol     edi, 8
                mov     ecx, [esi+ecx*4+400h]
                mov     ebx, [esp+24h]
                mov     [esp+14h], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp+28h]
                rol     eax, 8
                mov     edx, [esi+edx*4]
                mov     [esp+18h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                rol     ebp, 8
                mov     ebx, [esi+ebx*4]
                mov     eax, [esp+2Ch]
                mov     [esp+1Ch], ebp
                xor     edi, ebx
                xor     ecx, ebx
                mov     ebx, edi
                and     edi, 0FFh
                mov     ebp, [esp+30h]
                rol     ecx, 8
                mov     edi, [esi+edi*4+400h]
                mov     [esp+20h], ecx
                xor     eax, edi
                xor     edx, edi
                mov     edi, eax
                and     eax, 0FFh
                rol     edx, 8
                mov     eax, [esi+eax*4+400h]
                mov     ecx, [esp+34h]
                mov     [esp+24h], edx
                xor     ebp, eax
                xor     ebx, eax
                mov     eax, ebp
                and     ebp, 0FFh
                mov     edx, [esp+38h]
                rol     ebx, 8
                mov     ebp, [esi+ebp*4]
                mov     [esp+28h], ebx
                xor     ecx, ebp
                xor     edi, ebp
                mov     ebp, ecx
                and     ecx, 0FFh
                rol     edi, 8
                mov     ecx, [esi+ecx*4]
                mov     ebx, [esp+3Ch]
                mov     [esp+2Ch], edi
                xor     edx, ecx
                xor     eax, ecx
                mov     ecx, edx
                and     edx, 0FFh
                mov     edi, [esp]
                rol     eax, 8
                mov     edx, [esi+edx*4+400h]
                mov     [esp+30h], eax
                xor     ebx, edx
                xor     ebp, edx
                mov     edx, ebx
                and     ebx, 0FFh
                rol     ebp, 8
                rol     edx, 8
                mov     ebx, [esi+ebx*4+400h]
                mov     [esp+34h], ebp
                xor     edi, ebx
                xor     ecx, ebx
                rol     edi, 8
                rol     ecx, 8
                mov     [esp], edi
                mov     [esp+38h], ecx
                mov     [esp+3Ch], edx
                mov     ecx, [esp+64h]
                add     esi, 800h
                dec     ecx
                jnz     @@_level_loop
                mov     edi, [esp+60h]
                mov     eax, [esp+40h]
                mov     ebx, [esp+44h]
                mov     ecx, [esp+3Ch]
                mov     edx, [esp+38h]
                xor     eax, ecx
                xor     ebx, edx
                mov     [edi], eax
                mov     [edi+4], ebx
                mov     eax, [esp+48h]
                mov     ebx, [esp+4Ch]
                mov     ecx, [esp+34h]
                mov     edx, [esp+30h]
                xor     eax, ecx
                xor     ebx, edx
                mov     [edi+8], eax
                mov     [edi+0Ch], ebx
                mov     eax, [esp+50h]
                mov     ebx, [esp+54h]
                mov     ecx, [esp+2Ch]
                mov     edx, [esp+28h]
                xor     eax, ecx
                xor     ebx, edx
                mov     [edi+10h], eax
                mov     [edi+14h], ebx
                mov     eax, [esp+58h]
                mov     ebx, [esp+5Ch]
                mov     ecx, [esp+24h]
                mov     edx, [esp+20h]
                xor     eax, ecx
                xor     ebx, edx
                mov     [edi+18h], eax
                mov     [edi+1Ch], ebx
                mov     ebp, [esp+68h]
                mov     esp, ebp
                pop  ebp
                pop  edi
                pop  esi
                pop  ebx
  end;
end;
{$ENDIF}

{$IFDEF THash_Sapphire_asm}
procedure THash_Sapphire.Calc(const Data; DataSize: Integer);
asm
                test    ecx,ecx
                jle     @Exit

                push    ebx
                push    esi
                push    edi              // let edi points to Sapphire partial context (w/o cards array)
                lea     esi,[eax].THash_Sapphire.FCards
                lea     edi,[eax].THash_Sapphire.FRotor // let esi points to Sapphire cards array
                push    ebp            // edx points to data, ecx contains DataSize

                mov     ebp, esp
                sub     esp, 18h
                and     esp, 0FFFFFFE0h
                mov     eax, [edi]
                mov     ebx, [edi+4]
                mov     [esp+14h], ebp
                mov     ebp, [edi+8]
                mov     [esp], ebx
                mov     [esp+4], ebp
                mov     ebp, eax
                mov     eax, [edi+0Ch]
                mov     ebx, [edi+10h]
                mov     [esp+8], edx
                mov     [esp+10h], edi
@@data_loop:
                mov     [esp+0Ch], ecx
                mov     ecx, [esi+ebp*4]
                mov     edi, [esp]
                inc     ebp
                add     edi, ecx
                mov     ecx, [esi+ebx*4]
                and     edi, 0FFh
                and     ebp, 0FFh
                mov     edx, [esi+edi*4]
                mov     [esp], edi
                mov     [esi+ebx*4], edx
                mov     edx, [esi+eax*4]
                mov     [esi+edi*4], edx
                mov     edx, [esi+ebp*4]
                mov     [esi+eax*4], edx
                mov     [esi+ebp*4], ecx
                mov     ecx, [esi+ecx*4]
                mov     edx, [esi+eax*4]
                mov     eax, [esp+4]
                mov     edi, [esi+edi*4]
                add     ecx, eax
                mov     eax, [esi+ebp*4]
                and     ecx, 0FFh
                add     edi, eax
                mov     [esp+4], ecx
                and     edi, 0FFh
                mov     eax, [esi+ecx*4]
                mov     ecx, [esp+8]
                add     edx, eax
                mov     eax, [esi+ebx*4]
                add     edx, eax
                movzx   eax, byte ptr [ecx]
                and     edx, 0FFh
                mov     edi, [esi+edi*4]
                inc     ecx
                mov     ebx, eax
                mov     edx, [esi+edx*4]
                mov     [esp+8], ecx
                xor     ebx, edi
                mov     edx, [esi+edx*4]
                mov     ecx, [esp+0Ch]
                xor     ebx, edx
                dec     ecx
                jnz     @@data_loop
                mov     edi, [esp+10h]
                mov     ecx, [esp]
                mov     esi, [esp+4]
                mov     edx, [esp+14h]
                mov     [edi], ebp
                mov     [edi+4], ecx
                mov     esp, edx
                mov     [edi+8], esi
                mov     [edi+0Ch], eax
                mov     [edi+10h], ebx
                pop     ebp
                pop     edi
                pop     esi
                pop     ebx
@Exit:
end;
{$ENDIF}