mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-15 20:23:08 +00:00
55 lines
1.5 KiB
NASM
55 lines
1.5 KiB
NASM
blake2b_generate_new_hash_value:
|
|
// stack: i, retdest
|
|
%blake2b_hash_value_addr
|
|
// stack: addr, i, retdest
|
|
DUP2
|
|
ADD
|
|
%mload_kernel_general
|
|
// stack: h_i, i, retdest
|
|
%blake2b_internal_state_addr
|
|
// stack: addr, h_i, i, retdest
|
|
DUP3
|
|
ADD
|
|
%mload_kernel_general
|
|
// stack: v_i, h_i, i, retdest
|
|
%blake2b_internal_state_addr
|
|
// stack: addr, v_i, h_i, i, retdest
|
|
SWAP1
|
|
// stack: v_i, addr, h_i, i, retdest
|
|
SWAP3
|
|
// stack: i, addr, h_i, v_i, retdest
|
|
ADD
|
|
%add_const(8)
|
|
%mload_kernel_general
|
|
// stack: v_(i+8), h_i, v_i, retdest
|
|
XOR
|
|
XOR
|
|
// stack: h_i' = v_(i+8) ^ v_i ^ h_i, retdest
|
|
SWAP1
|
|
JUMP
|
|
|
|
global blake2b_generate_all_hash_values:
|
|
// stack: retdest
|
|
PUSH 8
|
|
// stack: i=8, retdest
|
|
blake2b_generate_hash_loop:
|
|
// stack: i, h_i', ..., h_7', retdest
|
|
%decrement
|
|
// stack: i-1, h_i', ..., h_7', retdest
|
|
PUSH blake2b_generate_hash_return
|
|
// stack: blake2b_generate_hash_return, i-1, h_i', ..., h_7', retdest
|
|
DUP2
|
|
// stack: i-1, blake2b_generate_hash_return, i-1, h_i', ..., h_7', retdest
|
|
%jump(blake2b_generate_new_hash_value)
|
|
blake2b_generate_hash_return:
|
|
// stack: h_(i-1)', i-1, h_i', ..., h_7', retdest
|
|
SWAP1
|
|
// stack: i-1, h_(i-1)', h_i', ..., h_7', retdest
|
|
DUP1
|
|
// stack: i-1, i-1, h_(i-1)', ..., h_7', retdest
|
|
%jumpi(blake2b_generate_hash_loop)
|
|
// stack: i-1=0, h_0', ..., h_7', retdest
|
|
%stack (i, h: 8, ret) -> (ret, h)
|
|
// stack: retdest, h_0'...h_7'
|
|
JUMP
|