// File: /workspace/github_c_makefile_star2_O0/mjosaarinen[P]brutus/crypto_aead/trivia128v2/ref/encrypt.c
// Function: SC_Update64
void SC_Update64(u64 *S, u64 *Z)
{
u64 t1 = (S[0] << (66 - 64) | S[1] >> (128 - 66)) ^ (S[1] << (132 - 128) | S[2] >> (192 - 132));
u64 t2 = (S[3] << (69 - 64) | S[4] >> (128 - 69)) ^ (S[3] << (105 - 64) | S[4] >> (128 - 105));
u64 t3 = (S[5] << (66 - 64) | S[6] >> (128 - 66)) ^ (S[6] << (147 - 128) | S[7] >> (192 - 147));
Z[0] = t1 ^ t2 ^ t3 ^ ((S[0] << 38 | S[1] >> 26) & (S[3] << 2 | S[4] >> 62)); // Key Block generated

//Computing Updated Blocks
t1 ^= ((S[1] << (130 - 128) | S[2] >> (192 - 130)) & (S[1] << (131 - 128) | S[2] >> (192 - 131))) ^ (S[3] << (96 - 64) | S[4] >> (128 - 96));
t2 ^= ((S[3] << (103 - 64) | S[4] >> (128 - 103)) & (S[3] << (104 - 64) | S[4] >> (128 - 104))) ^ (S[5] << (120 - 64) | S[6] >> (128 - 120));
t3 ^= ((S[6] << (145 - 128) | S[7] >> (192 - 145)) & (S[6] << (146 - 128) | S[7] >> (192 - 146))) ^ (S[0] << (75 - 64) | S[1] >> (128 - 75));

//Shifting and Inserting Updated Blocks
S[2] = S[1]; S[1] = S[0]; S[0] = t3;   S[4] = S[3]; S[3] = t1;   S[7] = S[6]; S[6] = S[5]; S[5] = t2;
}

// Assembly:
movq %rdi, -0x8(%rsp)
movq %rsi, -0x10(%rsp)
movq -0x8(%rsp), %rax
movq (%rax), %rax
shlq $0x2, %rax
movq -0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
shrq $0x3e, %rcx
orq %rcx, %rax
movq -0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
shlq $0x4, %rcx
movq -0x8(%rsp), %rdx
movq 0x10(%rdx), %rdx
shrq $0x3c, %rdx
orq %rdx, %rcx
xorq %rcx, %rax
movq %rax, -0x18(%rsp)
movq -0x8(%rsp), %rax
movq 0x18(%rax), %rax
shlq $0x5, %rax
movq -0x8(%rsp), %rcx
movq 0x20(%rcx), %rcx
shrq $0x3b, %rcx
orq %rcx, %rax
movq -0x8(%rsp), %rcx
movq 0x18(%rcx), %rcx
shlq $0x29, %rcx
movq -0x8(%rsp), %rdx
movq 0x20(%rdx), %rdx
shrq $0x17, %rdx
orq %rdx, %rcx
xorq %rcx, %rax
movq %rax, -0x20(%rsp)
movq -0x8(%rsp), %rax
movq 0x28(%rax), %rax
shlq $0x2, %rax
movq -0x8(%rsp), %rcx
movq 0x30(%rcx), %rcx
shrq $0x3e, %rcx
orq %rcx, %rax
movq -0x8(%rsp), %rcx
movq 0x30(%rcx), %rcx
shlq $0x13, %rcx
movq -0x8(%rsp), %rdx
movq 0x38(%rdx), %rdx
shrq $0x2d, %rdx
orq %rdx, %rcx
xorq %rcx, %rax
movq %rax, -0x28(%rsp)
movq -0x18(%rsp), %rcx
xorq -0x20(%rsp), %rcx
xorq -0x28(%rsp), %rcx
movq -0x8(%rsp), %rax
movq (%rax), %rax
shlq $0x26, %rax
movq -0x8(%rsp), %rdx
movq 0x8(%rdx), %rdx
shrq $0x1a, %rdx
orq %rdx, %rax
movq -0x8(%rsp), %rdx
movq 0x18(%rdx), %rdx
shlq $0x2, %rdx
movq -0x8(%rsp), %rsi
movq 0x20(%rsi), %rsi
shrq $0x3e, %rsi
orq %rsi, %rdx
andq %rdx, %rax
xorq %rax, %rcx
movq -0x10(%rsp), %rax
movq %rcx, (%rax)
movq -0x8(%rsp), %rax
movq 0x8(%rax), %rax
shlq $0x2, %rax
movq -0x8(%rsp), %rcx
movq 0x10(%rcx), %rcx
shrq $0x3e, %rcx
orq %rcx, %rax
movq -0x8(%rsp), %rcx
movq 0x8(%rcx), %rcx
shlq $0x3, %rcx
movq -0x8(%rsp), %rdx
movq 0x10(%rdx), %rdx
shrq $0x3d, %rdx
orq %rdx, %rcx
andq %rcx, %rax
movq -0x8(%rsp), %rcx
movq 0x18(%rcx), %rcx
shlq $0x20, %rcx
movq -0x8(%rsp), %rdx
movq 0x20(%rdx), %rdx
shrq $0x20, %rdx
orq %rdx, %rcx
xorq %rcx, %rax
xorq -0x18(%rsp), %rax
movq %rax, -0x18(%rsp)
movq -0x8(%rsp), %rax
movq 0x18(%rax), %rax
shlq $0x27, %rax
movq -0x8(%rsp), %rcx
movq 0x20(%rcx), %rcx
shrq $0x19, %rcx
orq %rcx, %rax
movq -0x8(%rsp), %rcx
movq 0x18(%rcx), %rcx
shlq $0x28, %rcx
movq -0x8(%rsp), %rdx
movq 0x20(%rdx), %rdx
shrq $0x18, %rdx
orq %rdx, %rcx
andq %rcx, %rax
movq -0x8(%rsp), %rcx
movq 0x28(%rcx), %rcx
shlq $0x38, %rcx
movq -0x8(%rsp), %rdx
movq 0x30(%rdx), %rdx
shrq $0x8, %rdx
orq %rdx, %rcx
xorq %rcx, %rax
xorq -0x20(%rsp), %rax
movq %rax, -0x20(%rsp)
movq -0x8(%rsp), %rax
movq 0x30(%rax), %rax
shlq $0x11, %rax
movq -0x8(%rsp), %rcx
movq 0x38(%rcx), %rcx
shrq $0x2f, %rcx
orq %rcx, %rax
movq -0x8(%rsp), %rcx
movq 0x30(%rcx), %rcx
shlq $0x12, %rcx
movq -0x8(%rsp), %rdx
movq 0x38(%rdx), %rdx
shrq $0x2e, %rdx
orq %rdx, %rcx
andq %rcx, %rax
movq -0x8(%rsp), %rcx
movq (%rcx), %rcx
shlq $0xb, %rcx
movq -0x8(%rsp), %rdx
movq 0x8(%rdx), %rdx
shrq $0x35, %rdx
orq %rdx, %rcx
xorq %rcx, %rax
xorq -0x28(%rsp), %rax
movq %rax, -0x28(%rsp)
movq -0x8(%rsp), %rax
movq 0x8(%rax), %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rsp), %rax
movq (%rax), %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq -0x28(%rsp), %rcx
movq -0x8(%rsp), %rax
movq %rcx, (%rax)
movq -0x8(%rsp), %rax
movq 0x18(%rax), %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x20(%rax)
movq -0x18(%rsp), %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rsp), %rax
movq 0x30(%rax), %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x38(%rax)
movq -0x8(%rsp), %rax
movq 0x28(%rax), %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x30(%rax)
movq -0x20(%rsp), %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x28(%rax)
retq
nopl (%rax)