// Hand-optimized TASM baseline: os.neptune.locks.multisig
//
// 2-of-3 multisig: divine 3 key hashes + bitmask + 2 secrets.
// verify_key: [secret expected_hash] -> []
os_neptune_locks_multisig__verify_key:
swap 1
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
hash
pop 4
eq
assert
return
os_neptune_locks_multisig__main:
// Divine 3 key hashes
divine 5
divine 5
divine 5
// Extract first field of each
swap 14
pop 4
swap 9
pop 4
swap 4
pop 4
// Stack: k0 k1 k2
// Divine bitmask
divine 1
// Dispatch on mask value
dup 0
push 3
eq
skiz
call __mask3
dup 0
push 5
eq
skiz
call __mask5
dup 0
push 6
eq
skiz
call __mask6
pop 1
pop 1
pop 1
pop 1
// Read kernel hash
read_io 5
pop 5
return
__mask3:
// keys 0+1
pop 1
divine 1
swap 3
call os_neptune_locks_multisig__verify_key
divine 1
swap 2
call os_neptune_locks_multisig__verify_key
return
__mask5:
// keys 0+2
pop 1
divine 1
swap 3
call os_neptune_locks_multisig__verify_key
divine 1
swap 1
call os_neptune_locks_multisig__verify_key
pop 1
return
__mask6:
// keys 1+2
pop 1
swap 2
pop 1
divine 1
swap 2
call os_neptune_locks_multisig__verify_key
divine 1
swap 1
call os_neptune_locks_multisig__verify_key
return