// File: /workspace/github_c_makefile_star2_O0/mjosaarinen[P]brutus/crypto_aead/icepole128v2/ref/icepole.c
// Function: Rho
void Rho(ICESTATE SS, ICESTATE S)
{
    SS[0][0] = S[0][0]; 
    SS[0][1] = ROTL(S[0][1], 36);
    SS[0][2] = ROTL(S[0][2],  3);
    SS[0][3] = ROTL(S[0][3], 41);
    SS[0][4] = ROTL(S[0][4], 18);
    
    SS[1][0] = ROTL(S[1][0],  1); 
    SS[1][1] = ROTL(S[1][1], 44);
    SS[1][2] = ROTL(S[1][2], 10);
    SS[1][3] = ROTL(S[1][3], 45);
    SS[1][4] = ROTL(S[1][4],  2);
    
    SS[2][0] = ROTL(S[2][0], 62); 
    SS[2][1] = ROTL(S[2][1],  6);
    SS[2][2] = ROTL(S[2][2], 43);
    SS[2][3] = ROTL(S[2][3], 15);
    SS[2][4] = ROTL(S[2][4], 61);

    SS[3][0] = ROTL(S[3][0], 28); 
    SS[3][1] = ROTL(S[3][1], 55);
    SS[3][2] = ROTL(S[3][2], 25);
    SS[3][3] = ROTL(S[3][3], 21);
    SS[3][4] = ROTL(S[3][4], 56);
}

// Assembly:
movq %rdi, -0x8(%rsp)
movq %rsi, -0x10(%rsp)
movq -0x10(%rsp), %rax
movq (%rax), %rcx
movq -0x8(%rsp), %rax
movq %rcx, (%rax)
movq -0x10(%rsp), %rax
movq 0x8(%rax), %rcx
shlq $0x24, %rcx
movq -0x10(%rsp), %rax
movq 0x8(%rax), %rax
shrq $0x1c, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rsp), %rax
movq 0x10(%rax), %rcx
shlq $0x3, %rcx
movq -0x10(%rsp), %rax
movq 0x10(%rax), %rax
shrq $0x3d, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rsp), %rax
movq 0x18(%rax), %rcx
shlq $0x29, %rcx
movq -0x10(%rsp), %rax
movq 0x18(%rax), %rax
shrq $0x17, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rsp), %rax
movq 0x20(%rax), %rcx
shlq $0x12, %rcx
movq -0x10(%rsp), %rax
movq 0x20(%rax), %rax
shrq $0x2e, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x20(%rax)
movq -0x10(%rsp), %rax
movq 0x28(%rax), %rcx
shlq %rcx
movq -0x10(%rsp), %rax
movq 0x28(%rax), %rax
shrq $0x3f, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rsp), %rax
movq 0x30(%rax), %rcx
shlq $0x2c, %rcx
movq -0x10(%rsp), %rax
movq 0x30(%rax), %rax
shrq $0x14, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rsp), %rax
movq 0x38(%rax), %rcx
shlq $0xa, %rcx
movq -0x10(%rsp), %rax
movq 0x38(%rax), %rax
shrq $0x36, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x38(%rax)
movq -0x10(%rsp), %rax
movq 0x40(%rax), %rcx
shlq $0x2d, %rcx
movq -0x10(%rsp), %rax
movq 0x40(%rax), %rax
shrq $0x13, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x40(%rax)
movq -0x10(%rsp), %rax
movq 0x48(%rax), %rcx
shlq $0x2, %rcx
movq -0x10(%rsp), %rax
movq 0x48(%rax), %rax
shrq $0x3e, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x48(%rax)
movq -0x10(%rsp), %rax
movq 0x50(%rax), %rcx
shlq $0x3e, %rcx
movq -0x10(%rsp), %rax
movq 0x50(%rax), %rax
shrq $0x2, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x50(%rax)
movq -0x10(%rsp), %rax
movq 0x58(%rax), %rcx
shlq $0x6, %rcx
movq -0x10(%rsp), %rax
movq 0x58(%rax), %rax
shrq $0x3a, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x58(%rax)
movq -0x10(%rsp), %rax
movq 0x60(%rax), %rcx
shlq $0x2b, %rcx
movq -0x10(%rsp), %rax
movq 0x60(%rax), %rax
shrq $0x15, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x60(%rax)
movq -0x10(%rsp), %rax
movq 0x68(%rax), %rcx
shlq $0xf, %rcx
movq -0x10(%rsp), %rax
movq 0x68(%rax), %rax
shrq $0x31, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x68(%rax)
movq -0x10(%rsp), %rax
movq 0x70(%rax), %rcx
shlq $0x3d, %rcx
movq -0x10(%rsp), %rax
movq 0x70(%rax), %rax
shrq $0x3, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x70(%rax)
movq -0x10(%rsp), %rax
movq 0x78(%rax), %rcx
shlq $0x1c, %rcx
movq -0x10(%rsp), %rax
movq 0x78(%rax), %rax
shrq $0x24, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x78(%rax)
movq -0x10(%rsp), %rax
movq 0x80(%rax), %rcx
shlq $0x37, %rcx
movq -0x10(%rsp), %rax
movq 0x80(%rax), %rax
shrq $0x9, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x80(%rax)
movq -0x10(%rsp), %rax
movq 0x88(%rax), %rcx
shlq $0x19, %rcx
movq -0x10(%rsp), %rax
movq 0x88(%rax), %rax
shrq $0x27, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x88(%rax)
movq -0x10(%rsp), %rax
movq 0x90(%rax), %rcx
shlq $0x15, %rcx
movq -0x10(%rsp), %rax
movq 0x90(%rax), %rax
shrq $0x2b, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x90(%rax)
movq -0x10(%rsp), %rax
movq 0x98(%rax), %rcx
shlq $0x38, %rcx
movq -0x10(%rsp), %rax
movq 0x98(%rax), %rax
shrq $0x8, %rax
orq %rax, %rcx
movq -0x8(%rsp), %rax
movq %rcx, 0x98(%rax)
retq