// File: /workspace/github_c_makefile_star2_O1/mjosaarinen[P]brutus/crypto_aead/icepole128v2/ref/icepole.c
// Function: Mu
void Mu(ICESTATE SS, ICESTATE S)
{
    SS[0][0] = S[0][4] ^ S[1][0] ^ S[2][0] ^ S[3][0];
    SS[0][1] = S[0][0] ^ S[1][1] ^ S[2][1] ^ S[3][1];
    SS[0][2] = S[0][4] ^ S[0][1] ^ S[1][2] ^ S[2][2] ^ S[3][2];
    SS[0][3] = S[0][2] ^ S[1][3] ^ S[2][3] ^ S[3][3];
    SS[0][4] = S[0][3] ^ S[1][4] ^ S[2][4] ^ S[3][4];

    SS[1][0] = S[0][0] ^ S[1][0] ^ S[2][1] ^ S[3][4];
    SS[1][1] = S[0][1] ^ S[1][1] ^ S[2][2] ^ S[2][0] ^ S[3][0];
    SS[1][2] = S[0][2] ^ S[1][2] ^ S[2][3] ^ S[3][4] ^ S[3][1];
    SS[1][3] = S[0][3] ^ S[1][3] ^ S[2][4] ^ S[3][2];
    SS[1][4] = S[0][4] ^ S[1][4] ^ S[2][0] ^ S[3][3];

    SS[2][0] = S[0][0] ^ S[1][4] ^ S[2][0] ^ S[3][1];
    SS[2][1] = S[0][1] ^ S[1][0] ^ S[2][1] ^ S[3][2] ^ S[3][0];
    SS[2][2] = S[0][2] ^ S[1][4] ^ S[1][1] ^ S[2][2] ^ S[3][3];
    SS[2][3] = S[0][3] ^ S[1][2] ^ S[2][3] ^ S[3][4];
    SS[2][4] = S[0][4] ^ S[1][3] ^ S[2][4] ^ S[3][0];

    SS[3][0] = S[0][0] ^ S[1][1] ^ S[2][4] ^ S[3][0];
    SS[3][1] = S[0][1] ^ S[1][2] ^ S[1][0] ^ S[2][0] ^ S[3][1];
    SS[3][2] = S[0][2] ^ S[1][3] ^ S[2][4] ^ S[2][1] ^ S[3][2];
    SS[3][3] = S[0][3] ^ S[1][4] ^ S[2][2] ^ S[3][3];
    SS[3][4] = S[0][4] ^ S[1][0] ^ S[2][3] ^ S[3][4];
}

// Assembly:
movq 0x28(%rsi), %rax
xorq 0x20(%rsi), %rax
xorq 0x50(%rsi), %rax
xorq 0x78(%rsi), %rax
movq %rax, (%rdi)
movq 0x30(%rsi), %rax
xorq (%rsi), %rax
xorq 0x58(%rsi), %rax
xorq 0x80(%rsi), %rax
movq %rax, 0x8(%rdi)
movq 0x8(%rsi), %rax
xorq 0x20(%rsi), %rax
xorq 0x38(%rsi), %rax
xorq 0x60(%rsi), %rax
xorq 0x88(%rsi), %rax
movq %rax, 0x10(%rdi)
movq 0x40(%rsi), %rax
xorq 0x10(%rsi), %rax
xorq 0x68(%rsi), %rax
xorq 0x90(%rsi), %rax
movq %rax, 0x18(%rdi)
movq 0x48(%rsi), %rax
xorq 0x18(%rsi), %rax
xorq 0x70(%rsi), %rax
xorq 0x98(%rsi), %rax
movq %rax, 0x20(%rdi)
movq 0x28(%rsi), %rax
xorq (%rsi), %rax
xorq 0x58(%rsi), %rax
xorq 0x98(%rsi), %rax
movq %rax, 0x28(%rdi)
movq 0x30(%rsi), %rax
xorq 0x8(%rsi), %rax
xorq 0x60(%rsi), %rax
xorq 0x50(%rsi), %rax
xorq 0x78(%rsi), %rax
movq %rax, 0x30(%rdi)
movq 0x38(%rsi), %rax
xorq 0x10(%rsi), %rax
xorq 0x68(%rsi), %rax
xorq 0x98(%rsi), %rax
xorq 0x80(%rsi), %rax
movq %rax, 0x38(%rdi)
movq 0x40(%rsi), %rax
xorq 0x18(%rsi), %rax
xorq 0x70(%rsi), %rax
xorq 0x88(%rsi), %rax
movq %rax, 0x40(%rdi)
movq 0x48(%rsi), %rax
xorq 0x20(%rsi), %rax
xorq 0x50(%rsi), %rax
xorq 0x90(%rsi), %rax
movq %rax, 0x48(%rdi)
movq 0x48(%rsi), %rax
xorq (%rsi), %rax
xorq 0x50(%rsi), %rax
xorq 0x80(%rsi), %rax
movq %rax, 0x50(%rdi)
movq 0x28(%rsi), %rax
xorq 0x8(%rsi), %rax
xorq 0x58(%rsi), %rax
xorq 0x88(%rsi), %rax
xorq 0x78(%rsi), %rax
movq %rax, 0x58(%rdi)
movq 0x48(%rsi), %rax
xorq 0x10(%rsi), %rax
xorq 0x30(%rsi), %rax
xorq 0x60(%rsi), %rax
xorq 0x90(%rsi), %rax
movq %rax, 0x60(%rdi)
movq 0x38(%rsi), %rax
xorq 0x18(%rsi), %rax
xorq 0x68(%rsi), %rax
xorq 0x98(%rsi), %rax
movq %rax, 0x68(%rdi)
movq 0x40(%rsi), %rax
xorq 0x20(%rsi), %rax
xorq 0x70(%rsi), %rax
xorq 0x78(%rsi), %rax
movq %rax, 0x70(%rdi)
movq 0x30(%rsi), %rax
xorq (%rsi), %rax
xorq 0x70(%rsi), %rax
xorq 0x78(%rsi), %rax
movq %rax, 0x78(%rdi)
movq 0x38(%rsi), %rax
xorq 0x8(%rsi), %rax
xorq 0x28(%rsi), %rax
xorq 0x50(%rsi), %rax
xorq 0x80(%rsi), %rax
movq %rax, 0x80(%rdi)
movq 0x40(%rsi), %rax
xorq 0x10(%rsi), %rax
xorq 0x70(%rsi), %rax
xorq 0x58(%rsi), %rax
xorq 0x88(%rsi), %rax
movq %rax, 0x88(%rdi)
movq 0x48(%rsi), %rax
xorq 0x18(%rsi), %rax
xorq 0x60(%rsi), %rax
xorq 0x90(%rsi), %rax
movq %rax, 0x90(%rdi)
movq 0x28(%rsi), %rax
xorq 0x20(%rsi), %rax
xorq 0x68(%rsi), %rax
xorq 0x98(%rsi), %rax
movq %rax, 0x98(%rdi)
retq