xtool/contrib/DelphiEncryptionCompendium/Source/DECHash.sha3_x64.inc

319 lines
7.6 KiB
PHP

{*****************************************************************************
The DEC team (see file NOTICE.txt) licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. A copy of this licence is found in the root directory of
this project in the file LICENCE.txt or alternatively at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
*****************************************************************************}
{**********************************************************************}
{ }
{ "The contents of this file are subject to the Mozilla Public }
{ License Version 1.1 (the "License"); you may not use this }
{ file except in compliance with the License. You may obtain }
{ a copy of the License at http://www.mozilla.org/MPL/ }
{ }
{ Software distributed under the License is distributed on an }
{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express }
{ or implied. See the License for the specific language }
{ governing rights and limitations under the License. }
{ }
{ Copyright Creative IT. }
{ Current maintainer: Eric Grange }
{ }
{**********************************************************************}
// The original source file can be found here:
// https://bitbucket.org/egrange/dwscript/src
push r12
push r13
push r14
add rdx, 128
add rcx, 128
// Theta
mov rax, [rdx-128]
xor rax, [rdx-88]
xor rax, [rdx-48]
xor rax, [rdx-8]
xor rax, [rdx+32]
mov [r8], rax
mov rax, [rdx-120]
xor rax, [rdx-80]
xor rax, [rdx-40]
xor rax, [rdx]
xor rax, [rdx+40]
mov [r8+8], rax
mov rax, [rdx-112]
xor rax, [rdx-72]
xor rax, [rdx-32]
xor rax, [rdx+8]
xor rax, [rdx+48]
mov [r8+16], rax
mov rax, [rdx-104]
xor rax, [rdx-64]
xor rax, [rdx-24]
xor rax, [rdx+16]
xor rax, [rdx+56]
mov [r8+24], rax
mov rax, [rdx-96]
xor rax, [rdx-56]
xor rax, [rdx-16]
xor rax, [rdx+24]
xor rax, [rdx+64]
mov [r8+32], rax
mov r10, [r8]
rol r10, 1
xor r10, [r8+24]
mov r11, [r8+8]
rol r11, 1
xor r11, [r8+32]
mov r12, [r8+16]
rol r12, 1
xor r12, [r8]
mov r13, [r8+24]
rol r13, 1
xor r13, [r8+8]
mov r14, [r8+32]
rol r14, 1
xor r14, [r8+16]
// Rho Pi
mov rax, [rdx-128]
xor rax, r11
mov [rcx-128], rax
mov rax, [rdx-80]
xor rax, r12
rol rax, 44
mov [rcx-120], rax
mov rax, [rdx-32]
xor rax, r13
rol rax, 43
mov [rcx-112], rax
mov rax, [rdx+16]
xor rax, r14
rol rax, 21
mov [rcx-104], rax
mov rax, [rdx+64]
xor rax, r10
rol rax, 14
mov [rcx-96], rax
mov rax, [rdx-104]
xor rax, r14
rol rax, 28
mov [rcx-88], rax
mov rax, [rdx-56]
xor rax, r10
rol rax, 20
mov [rcx-80], rax
mov rax, [rdx-48]
xor rax, r11
rol rax, 3
mov [rcx-72], rax
mov rax, [rdx]
xor rax, r12
rol rax, 45
mov [rcx-64], rax
mov rax, [rdx+48]
xor rax, r13
rol rax, 61
mov [rcx-56], rax
mov rax, [rdx-120]
xor rax, r12
rol rax, 1
mov [rcx-48], rax
mov rax, [rdx-72]
xor rax, r13
rol rax, 6
mov [rcx-40], rax
mov rax, [rdx-24]
xor rax, r14
rol rax, 25
mov [rcx-32], rax
mov rax, [rdx+24]
xor rax, r10
rol rax, 8
mov [rcx-24], rax
mov rax, [rdx+32]
xor rax, r11
rol rax, 18
mov [rcx-16], rax
mov rax, [rdx-96]
xor rax, r10
rol rax, 27
mov [rcx-8], rax
mov rax, [rdx-88]
xor rax, r11
rol rax, 36
mov [rcx], rax
mov rax, [rdx-40]
xor rax, r12
rol rax, 10
mov [rcx+8], rax
mov rax, [rdx+8]
xor rax, r13
rol rax, 15
mov [rcx+16], rax
mov rax, [rdx+56]
xor rax, r14
rol rax, 56
mov [rcx+24], rax
mov rax, [rdx-112]
xor rax, r13
rol rax, 62
mov [rcx+32], rax
mov rax, [rdx-64]
xor rax, r14
rol rax, 55
mov [rcx+40], rax
mov rax, [rdx-16]
xor rax, r10
rol rax, 39
mov [rcx+48], rax
mov rax, [rdx-8]
xor rax, r11
rol rax, 41
mov [rcx+56], rax
mov rax, [rdx+40]
xor rax, r12
rol rax, 2
mov [rcx+64], rax
// Chi
mov rax, [rcx-120]
not rax
and rax, [rcx-112]
xor rax, [rcx-128]
mov [rdx-128], rax
mov rax, [rcx-112]
not rax
and rax, [rcx-104]
xor rax, [rcx-120]
mov [rdx-120], rax
mov rax, [rcx-104]
not rax
and rax, [rcx-96]
xor rax, [rcx-112]
mov [rdx-112], rax
mov rax, [rcx-96]
not rax
and rax, [rcx-128]
xor rax, [rcx-104]
mov [rdx-104], rax
mov rax, [rcx-128]
not rax
and rax, [rcx-120]
xor rax, [rcx-96]
mov [rdx-96], rax
mov rax, [rcx-80]
not rax
and rax, [rcx-72]
xor rax, [rcx-88]
mov [rdx-88], rax
mov rax, [rcx-72]
not rax
and rax, [rcx-64]
xor rax, [rcx-80]
mov [rdx-80], rax
mov rax, [rcx-64]
not rax
and rax, [rcx-56]
xor rax, [rcx-72]
mov [rdx-72], rax
mov rax, [rcx-56]
not rax
and rax, [rcx-88]
xor rax, [rcx-64]
mov [rdx-64], rax
mov rax, [rcx-88]
not rax
and rax, [rcx-80]
xor rax, [rcx-56]
mov [rdx-56], rax
mov rax, [rcx-40]
not rax
and rax, [rcx-32]
xor rax, [rcx-48]
mov [rdx-48], rax
mov rax, [rcx-32]
not rax
and rax, [rcx-24]
xor rax, [rcx-40]
mov [rdx-40], rax
mov rax, [rcx-24]
not rax
and rax, [rcx-16]
xor rax, [rcx-32]
mov [rdx-32], rax
mov rax, [rcx-16]
not rax
and rax, [rcx-48]
xor rax, [rcx-24]
mov [rdx-24], rax
mov rax, [rcx-48]
not rax
and rax, [rcx-40]
xor rax, [rcx-16]
mov [rdx-16], rax
mov rax, [rcx]
not rax
and rax, [rcx+8]
xor rax, [rcx-8]
mov [rdx-8], rax
mov rax, [rcx+8]
not rax
and rax, [rcx+16]
xor rax, [rcx]
mov [rdx], rax
mov rax, [rcx+16]
not rax
and rax, [rcx+24]
xor rax, [rcx+8]
mov [rdx+8], rax
mov rax, [rcx+24]
not rax
and rax, [rcx-8]
xor rax, [rcx+16]
mov [rdx+16], rax
mov rax, [rcx-8]
not rax
and rax, [rcx]
xor rax, [rcx+24]
mov [rdx+24], rax
mov rax, [rcx+40]
not rax
and rax, [rcx+48]
xor rax, [rcx+32]
mov [rdx+32], rax
mov rax, [rcx+48]
not rax
and rax, [rcx+56]
xor rax, [rcx+40]
mov [rdx+40], rax
mov rax, [rcx+56]
not rax
and rax, [rcx+64]
xor rax, [rcx+48]
mov [rdx+48], rax
mov rax, [rcx+64]
not rax
and rax, [rcx+32]
xor rax, [rcx+56]
mov [rdx+56], rax
mov rax, [rcx+32]
not rax
and rax, [rcx+40]
xor rax, [rcx+64]
mov [rdx+64], rax
pop r14
pop r13
pop r12