// File: occivink[P]pyct/monocypher.cpp
// Function: fe_frombytes_mask(int*, unsigned char const*, unsigned int)
static void fe_frombytes_mask(fe h, const u8 s[32], unsigned nb_mask)
{
    i32 mask = 0xffffff >> nb_mask;
    i64 t0 =  load32_le(s);                        // t0 < 2^32
    i64 t1 =  load24_le(s +  4) << 6;              // t1 < 2^30
    i64 t2 =  load24_le(s +  7) << 5;              // t2 < 2^29
    i64 t3 =  load24_le(s + 10) << 3;              // t3 < 2^27
    i64 t4 =  load24_le(s + 13) << 2;              // t4 < 2^26
    i64 t5 =  load32_le(s + 16);                   // t5 < 2^32
    i64 t6 =  load24_le(s + 20) << 7;              // t6 < 2^31
    i64 t7 =  load24_le(s + 23) << 5;              // t7 < 2^29
    i64 t8 =  load24_le(s + 26) << 4;              // t8 < 2^28
    i64 t9 = (load24_le(s + 29) & mask) << 2;      // t9 < 2^25
    FE_CARRY;                                      // Carry precondition OK
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl -0x14(%rbp), %ecx
movl $0xffffff, %eax         # imm = 0xFFFFFF
sarl %cl, %eax
movl %eax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4300
movl %eax, %eax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rdi
addq $0x4, %rdi
callq 0x132a0
shll $0x6, %eax
movl %eax, %eax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
addq $0x7, %rdi
callq 0x132a0
shll $0x5, %eax
movl %eax, %eax
movq %rax, -0x30(%rbp)
movq -0x10(%rbp), %rdi
addq $0xa, %rdi
callq 0x132a0
shll $0x3, %eax
movl %eax, %eax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
addq $0xd, %rdi
callq 0x132a0
shll $0x2, %eax
movl %eax, %eax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
callq 0x4300
movl %eax, %eax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
addq $0x14, %rdi
callq 0x132a0
shll $0x7, %eax
movl %eax, %eax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
addq $0x17, %rdi
callq 0x132a0
shll $0x5, %eax
movl %eax, %eax
movq %rax, -0x58(%rbp)
movq -0x10(%rbp), %rdi
addq $0x1a, %rdi
callq 0x132a0
shll $0x4, %eax
movl %eax, %eax
movq %rax, -0x60(%rbp)
movq -0x10(%rbp), %rdi
addq $0x1d, %rdi
callq 0x132a0
andl -0x18(%rbp), %eax
shll $0x2, %eax
movl %eax, %eax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rax
addq $0x2000000, %rax        # imm = 0x2000000
sarq $0x1a, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x1a, %rcx
movq -0x20(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x70(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x40(%rbp), %rax
addq $0x2000000, %rax        # imm = 0x2000000
sarq $0x1a, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x1a, %rcx
movq -0x40(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x70(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x28(%rbp), %rax
addq $0x1000000, %rax        # imm = 0x1000000
sarq $0x19, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x19, %rcx
movq -0x28(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x70(%rbp), %rax
addq -0x30(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x48(%rbp), %rax
addq $0x1000000, %rax        # imm = 0x1000000
sarq $0x19, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x19, %rcx
movq -0x48(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x48(%rbp)
movq -0x70(%rbp), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x30(%rbp), %rax
addq $0x2000000, %rax        # imm = 0x2000000
sarq $0x1a, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x1a, %rcx
movq -0x30(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x70(%rbp), %rax
addq -0x38(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x50(%rbp), %rax
addq $0x2000000, %rax        # imm = 0x2000000
sarq $0x1a, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x1a, %rcx
movq -0x50(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x70(%rbp), %rax
addq -0x58(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x38(%rbp), %rax
addq $0x1000000, %rax        # imm = 0x1000000
sarq $0x19, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x19, %rcx
movq -0x38(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x70(%rbp), %rax
addq -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x58(%rbp), %rax
addq $0x1000000, %rax        # imm = 0x1000000
sarq $0x19, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x19, %rcx
movq -0x58(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x58(%rbp)
movq -0x70(%rbp), %rax
addq -0x60(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x40(%rbp), %rax
addq $0x2000000, %rax        # imm = 0x2000000
sarq $0x1a, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x1a, %rcx
movq -0x40(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x70(%rbp), %rax
addq -0x48(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x60(%rbp), %rax
addq $0x2000000, %rax        # imm = 0x2000000
sarq $0x1a, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x1a, %rcx
movq -0x60(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x60(%rbp)
movq -0x70(%rbp), %rax
addq -0x68(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rax
addq $0x1000000, %rax        # imm = 0x1000000
sarq $0x19, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x19, %rcx
movq -0x68(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x68(%rbp)
imulq $0x13, -0x70(%rbp), %rax
addq -0x20(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rax
addq $0x2000000, %rax        # imm = 0x2000000
sarq $0x1a, %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rcx
shlq $0x1a, %rcx
movq -0x20(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x70(%rbp), %rax
addq -0x28(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
movq -0x28(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x30(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x38(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
movq -0x40(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
movq -0x48(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x14(%rax)
movq -0x50(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x18(%rax)
movq -0x58(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x1c(%rax)
movq -0x60(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x20(%rax)
movq -0x68(%rbp), %rax
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x24(%rax)
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax)