// File: /workspace/github_cpp_makefile_star2_O1/occivink[P]pyct/monocypher.cpp
// Function: fe_mul_small(int*, int const*, int)
static void fe_mul_small(fe h, const fe f, i32 g)
{
    i64 t0 = f[0] * (i64) g;  i64 t1 = f[1] * (i64) g;
    i64 t2 = f[2] * (i64) g;  i64 t3 = f[3] * (i64) g;
    i64 t4 = f[4] * (i64) g;  i64 t5 = f[5] * (i64) g;
    i64 t6 = f[6] * (i64) g;  i64 t7 = f[7] * (i64) g;
    i64 t8 = f[8] * (i64) g;  i64 t9 = f[9] * (i64) g;
    // |t0|, |t2|, |t4|, |t6|, |t8|  <  1.65 * 2^26 * 2^31  < 2^58
    // |t1|, |t3|, |t5|, |t7|, |t9|  <  1.65 * 2^25 * 2^31  < 2^57

    FE_CARRY; // Carry precondition OK
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movslq (%rsi), %rbp
movslq %edx, %rcx
imulq %rcx, %rbp
movslq 0x4(%rsi), %r10
imulq %rcx, %r10
movslq 0x8(%rsi), %r8
imulq %rcx, %r8
movslq 0xc(%rsi), %rax
imulq %rcx, %rax
movslq 0x10(%rsi), %r15
imulq %rcx, %r15
movslq 0x14(%rsi), %r14
imulq %rcx, %r14
movslq 0x18(%rsi), %r11
imulq %rcx, %r11
movslq 0x1c(%rsi), %r9
imulq %rcx, %r9
movslq 0x20(%rsi), %r13
imulq %rcx, %r13
movslq 0x24(%rsi), %rdx
imulq %rcx, %rdx
movq %rdx, -0x8(%rsp)
movl $0x2000000, %edx        # imm = 0x2000000
leaq (%rdx,%rbp), %rsi
movq %rsi, %rcx
sarq $0x1a, %rcx
addq %r10, %rcx
movq $-0x4000000, %r10       # imm = 0xFC000000
andq %r10, %rsi
subq %rsi, %rbp
leaq (%r15,%rdx), %rsi
movq %rsi, %r12
sarq $0x1a, %r12
addq %r14, %r12
andq %r10, %rsi
subq %rsi, %r15
movl $0x1000000, %r10d       # imm = 0x1000000
leaq (%rcx,%r10), %r14
movq %r14, %rsi
sarq $0x19, %rsi
addq %r8, %rsi
movl $0xfe000000, %r8d       # imm = 0xFE000000
andl %r8d, %r14d
movl $0xfe000000, %ebx       # imm = 0xFE000000
subl %r14d, %ecx
leaq (%r12,%r10), %r14
movq %r14, %r8
sarq $0x19, %r8
addq %r11, %r8
andl %ebx, %r14d
subl %r14d, %r12d
leaq (%rsi,%rdx), %r14
movq %r14, %r11
sarq $0x1a, %r11
addq %rax, %r11
movl $0xfc000000, %eax       # imm = 0xFC000000
andl %eax, %r14d
movl $0xfc000000, %ebx       # imm = 0xFC000000
subl %r14d, %esi
leaq (%r8,%rdx), %rax
movq %rax, %r14
sarq $0x1a, %r14
addq %r9, %r14
andl %ebx, %eax
subl %eax, %r8d
leaq (%r11,%r10), %r9
movq %r9, %rax
sarq $0x19, %rax
addq %r15, %rax
movl $0xfe000000, %ebx       # imm = 0xFE000000
andl %ebx, %r9d
subl %r9d, %r11d
leaq (%r14,%r10), %r9
movq %r9, %r15
sarq $0x19, %r15
addq %r13, %r15
andl %ebx, %r9d
subl %r9d, %r14d
leaq (%rax,%rdx), %r13
movq %r13, %r9
movl $0xfc000000, %ebx       # imm = 0xFC000000
andl %ebx, %r13d
subl %r13d, %eax
shrq $0x1a, %r9
addl %r12d, %r9d
leaq (%r15,%rdx), %r13
movq %r13, %r12
sarq $0x1a, %r12
addq -0x8(%rsp), %r12
andl %ebx, %r13d
subl %r13d, %r15d
addq %r12, %r10
movq %r10, %r13
movl $0xfe000000, %ebx       # imm = 0xFE000000
andl %ebx, %r10d
sarq $0x19, %r13
subl %r10d, %r12d
leaq (,%r13,8), %r10
addq %r13, %r10
leaq (,%r10,2), %r10
addq %r13, %r10
addq %rbp, %r10
addq %r10, %rdx
movq %rdx, %rbx
movl $0xfc000000, %ebp       # imm = 0xFC000000
andl %ebp, %edx
subl %edx, %r10d
shrq $0x1a, %rbx
addl %ecx, %ebx
movl %r10d, (%rdi)
movl %ebx, 0x4(%rdi)
movl %esi, 0x8(%rdi)
movl %r11d, 0xc(%rdi)
movl %eax, 0x10(%rdi)
movl %r9d, 0x14(%rdi)
movl %r8d, 0x18(%rdi)
movl %r14d, 0x1c(%rdi)
movl %r15d, 0x20(%rdi)
movl %r12d, 0x24(%rdi)
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq