// File: /workspace/github_c_makefile_star2_O0/joewalnes[P]verifysignature/verifysignature.c
// Function: fe_tobytes
void fe_tobytes(unsigned char *s,const fe h) {
    int32_t h0 = h[0];
    int32_t h1 = h[1];
    int32_t h2 = h[2];
    int32_t h3 = h[3];
    int32_t h4 = h[4];
    int32_t h5 = h[5];
    int32_t h6 = h[6];
    int32_t h7 = h[7];
    int32_t h8 = h[8];
    int32_t h9 = h[9];
    int32_t q;
    int32_t carry0;
    int32_t carry1;
    int32_t carry2;
    int32_t carry3;
    int32_t carry4;
    int32_t carry5;
    int32_t carry6;
    int32_t carry7;
    int32_t carry8;
    int32_t carry9;

    q = (19 * h9 + (((int32_t) 1) << 24)) >> 25;
    q = (h0 + q) >> 26;
    q = (h1 + q) >> 25;
    q = (h2 + q) >> 26;
    q = (h3 + q) >> 25;
    q = (h4 + q) >> 26;
    q = (h5 + q) >> 25;
    q = (h6 + q) >> 26;
    q = (h7 + q) >> 25;
    q = (h8 + q) >> 26;
    q = (h9 + q) >> 25;

    /* Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20. */
    h0 += 19 * q;
    /* Goal: Output h-2^255 q, which is between 0 and 2^255-20. */

    carry0 = h0 >> 26; h1 += carry0; h0 -= carry0 << 26;
    carry1 = h1 >> 25; h2 += carry1; h1 -= carry1 << 25;
    carry2 = h2 >> 26; h3 += carry2; h2 -= carry2 << 26;
    carry3 = h3 >> 25; h4 += carry3; h3 -= carry3 << 25;
    carry4 = h4 >> 26; h5 += carry4; h4 -= carry4 << 26;
    carry5 = h5 >> 25; h6 += carry5; h5 -= carry5 << 25;
    carry6 = h6 >> 26; h7 += carry6; h6 -= carry6 << 26;
    carry7 = h7 >> 25; h8 += carry7; h7 -= carry7 << 25;
    carry8 = h8 >> 26; h9 += carry8; h8 -= carry8 << 26;
    carry9 = h9 >> 25;               h9 -= carry9 << 25;
                    /* h10 = carry9 */

    s[0] = h0 >> 0;
    s[1] = h0 >> 8;
    s[2] = h0 >> 16;
    s[3] = (h0 >> 24) | (h1 << 2);
    s[4] = h1 >> 6;
    s[5] = h1 >> 14;
    s[6] = (h1 >> 22) | (h2 << 3);
    s[7] = h2 >> 5;
    s[8] = h2 >> 13;
    s[9] = (h2 >> 21) | (h3 << 5);
    s[10] = h3 >> 3;
    s[11] = h3 >> 11;
    s[12] = (h3 >> 19) | (h4 << 6);
    s[13] = h4 >> 2;
    s[14] = h4 >> 10;
    s[15] = h4 >> 18;
    s[16] = h5 >> 0;
    s[17] = h5 >> 8;
    s[18] = h5 >> 16;
    s[19] = (h5 >> 24) | (h6 << 1);
    s[20] = h6 >> 7;
    s[21] = h6 >> 15;
    s[22] = (h6 >> 23) | (h7 << 3);
    s[23] = h7 >> 5;
    s[24] = h7 >> 13;
    s[25] = (h7 >> 21) | (h8 << 4);
    s[26] = h8 >> 4;
    s[27] = h8 >> 12;
    s[28] = (h8 >> 20) | (h9 << 6);
    s[29] = h9 >> 2;
    s[30] = h9 >> 10;
    s[31] = h9 >> 18;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x1c(%rbp)
movq -0x10(%rbp), %rax
movl 0xc(%rax), %eax
movl %eax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rax
movl 0x14(%rax), %eax
movl %eax, -0x28(%rbp)
movq -0x10(%rbp), %rax
movl 0x18(%rax), %eax
movl %eax, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x30(%rbp)
movq -0x10(%rbp), %rax
movl 0x20(%rax), %eax
movl %eax, -0x34(%rbp)
movq -0x10(%rbp), %rax
movl 0x24(%rax), %eax
movl %eax, -0x38(%rbp)
imull $0x13, -0x38(%rbp), %eax
addl $0x1000000, %eax        # imm = 0x1000000
sarl $0x19, %eax
movl %eax, -0x3c(%rbp)
movl -0x14(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x3c(%rbp)
movl -0x18(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x3c(%rbp)
movl -0x1c(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x3c(%rbp)
movl -0x20(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x3c(%rbp)
movl -0x24(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x3c(%rbp)
movl -0x28(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x3c(%rbp)
movl -0x2c(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x3c(%rbp)
movl -0x30(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x3c(%rbp)
movl -0x34(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x3c(%rbp)
movl -0x38(%rbp), %eax
addl -0x3c(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x3c(%rbp)
imull $0x13, -0x3c(%rbp), %eax
addl -0x14(%rbp), %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x40(%rbp)
movl -0x40(%rbp), %eax
addl -0x18(%rbp), %eax
movl %eax, -0x18(%rbp)
movl -0x40(%rbp), %ecx
shll $0x1a, %ecx
movl -0x14(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x14(%rbp)
movl -0x18(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl -0x44(%rbp), %ecx
shll $0x19, %ecx
movl -0x18(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x18(%rbp)
movl -0x1c(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x48(%rbp)
movl -0x48(%rbp), %eax
addl -0x20(%rbp), %eax
movl %eax, -0x20(%rbp)
movl -0x48(%rbp), %ecx
shll $0x1a, %ecx
movl -0x1c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x20(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
addl -0x24(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x4c(%rbp), %ecx
shll $0x19, %ecx
movl -0x20(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x20(%rbp)
movl -0x24(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x50(%rbp)
movl -0x50(%rbp), %eax
addl -0x28(%rbp), %eax
movl %eax, -0x28(%rbp)
movl -0x50(%rbp), %ecx
shll $0x1a, %ecx
movl -0x24(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x24(%rbp)
movl -0x28(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
addl -0x2c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl -0x54(%rbp), %ecx
shll $0x19, %ecx
movl -0x28(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x28(%rbp)
movl -0x2c(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
addl -0x30(%rbp), %eax
movl %eax, -0x30(%rbp)
movl -0x58(%rbp), %ecx
shll $0x1a, %ecx
movl -0x2c(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x2c(%rbp)
movl -0x30(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
addl -0x34(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x5c(%rbp), %ecx
shll $0x19, %ecx
movl -0x30(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x30(%rbp)
movl -0x34(%rbp), %eax
sarl $0x1a, %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %eax
addl -0x38(%rbp), %eax
movl %eax, -0x38(%rbp)
movl -0x60(%rbp), %ecx
shll $0x1a, %ecx
movl -0x34(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x34(%rbp)
movl -0x38(%rbp), %eax
sarl $0x19, %eax
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %ecx
shll $0x19, %ecx
movl -0x38(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x38(%rbp)
movl -0x14(%rbp), %eax
sarl $0x0, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, (%rax)
movl -0x14(%rbp), %eax
sarl $0x8, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x1(%rax)
movl -0x14(%rbp), %eax
sarl $0x10, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x2(%rax)
movl -0x14(%rbp), %eax
sarl $0x18, %eax
movl -0x18(%rbp), %ecx
shll $0x2, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x3(%rax)
movl -0x18(%rbp), %eax
sarl $0x6, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x4(%rax)
movl -0x18(%rbp), %eax
sarl $0xe, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x5(%rax)
movl -0x18(%rbp), %eax
sarl $0x16, %eax
movl -0x1c(%rbp), %ecx
shll $0x3, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x6(%rax)
movl -0x1c(%rbp), %eax
sarl $0x5, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x7(%rax)
movl -0x1c(%rbp), %eax
sarl $0xd, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x8(%rax)
movl -0x1c(%rbp), %eax
sarl $0x15, %eax
movl -0x20(%rbp), %ecx
shll $0x5, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x9(%rax)
movl -0x20(%rbp), %eax
sarl $0x3, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0xa(%rax)
movl -0x20(%rbp), %eax
sarl $0xb, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0xb(%rax)
movl -0x20(%rbp), %eax
sarl $0x13, %eax
movl -0x24(%rbp), %ecx
shll $0x6, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0xc(%rax)
movl -0x24(%rbp), %eax
sarl $0x2, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0xd(%rax)
movl -0x24(%rbp), %eax
sarl $0xa, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0xe(%rax)
movl -0x24(%rbp), %eax
sarl $0x12, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0xf(%rax)
movl -0x28(%rbp), %eax
sarl $0x0, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x10(%rax)
movl -0x28(%rbp), %eax
sarl $0x8, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x11(%rax)
movl -0x28(%rbp), %eax
sarl $0x10, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x12(%rax)
movl -0x28(%rbp), %eax
sarl $0x18, %eax
movl -0x2c(%rbp), %ecx
shll %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x13(%rax)
movl -0x2c(%rbp), %eax
sarl $0x7, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x14(%rax)
movl -0x2c(%rbp), %eax
sarl $0xf, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x15(%rax)
movl -0x2c(%rbp), %eax
sarl $0x17, %eax
movl -0x30(%rbp), %ecx
shll $0x3, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x16(%rax)
movl -0x30(%rbp), %eax
sarl $0x5, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x17(%rax)
movl -0x30(%rbp), %eax
sarl $0xd, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x18(%rax)
movl -0x30(%rbp), %eax
sarl $0x15, %eax
movl -0x34(%rbp), %ecx
shll $0x4, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x19(%rax)
movl -0x34(%rbp), %eax
sarl $0x4, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x1a(%rax)
movl -0x34(%rbp), %eax
sarl $0xc, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x1b(%rax)
movl -0x34(%rbp), %eax
sarl $0x14, %eax
movl -0x38(%rbp), %ecx
shll $0x6, %ecx
orl %ecx, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x1c(%rax)
movl -0x38(%rbp), %eax
sarl $0x2, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x1d(%rax)
movl -0x38(%rbp), %eax
sarl $0xa, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x1e(%rax)
movl -0x38(%rbp), %eax
sarl $0x12, %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movb %cl, 0x1f(%rax)
popq %rbp
retq
nopw (%rax,%rax)