// File: /workspace/github_c_makefile_star2_O0/skeeto[P]enchive/src/curve25519-donna.c
// Function: crecip
static void
crecip(int64_t *out, const int64_t *z)
{
  int64_t z2[10];
  int64_t z9[10];
  int64_t z11[10];
  int64_t z2_5_0[10];
  int64_t z2_10_0[10];
  int64_t z2_20_0[10];
  int64_t z2_50_0[10];
  int64_t z2_100_0[10];
  int64_t t0[10];
  int64_t t1[10];
  int i;

  /* 2 */ fsquare(z2,z);
  /* 4 */ fsquare(t1,z2);
  /* 8 */ fsquare(t0,t1);
  /* 9 */ fmul(z9,t0,z);
  /* 11 */ fmul(z11,z9,z2);
  /* 22 */ fsquare(t0,z11);
  /* 2^5 - 2^0 = 31 */ fmul(z2_5_0,t0,z9);

  /* 2^6 - 2^1 */ fsquare(t0,z2_5_0);
  /* 2^7 - 2^2 */ fsquare(t1,t0);
  /* 2^8 - 2^3 */ fsquare(t0,t1);
  /* 2^9 - 2^4 */ fsquare(t1,t0);
  /* 2^10 - 2^5 */ fsquare(t0,t1);
  /* 2^10 - 2^0 */ fmul(z2_10_0,t0,z2_5_0);

  /* 2^11 - 2^1 */ fsquare(t0,z2_10_0);
  /* 2^12 - 2^2 */ fsquare(t1,t0);
  /* 2^20 - 2^10 */ for (i = 2;i < 10;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }
  /* 2^20 - 2^0 */ fmul(z2_20_0,t1,z2_10_0);

  /* 2^21 - 2^1 */ fsquare(t0,z2_20_0);
  /* 2^22 - 2^2 */ fsquare(t1,t0);
  /* 2^40 - 2^20 */ for (i = 2;i < 20;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }
  /* 2^40 - 2^0 */ fmul(t0,t1,z2_20_0);

  /* 2^41 - 2^1 */ fsquare(t1,t0);
  /* 2^42 - 2^2 */ fsquare(t0,t1);
  /* 2^50 - 2^10 */ for (i = 2;i < 10;i += 2) { fsquare(t1,t0); fsquare(t0,t1); }
  /* 2^50 - 2^0 */ fmul(z2_50_0,t0,z2_10_0);

  /* 2^51 - 2^1 */ fsquare(t0,z2_50_0);
  /* 2^52 - 2^2 */ fsquare(t1,t0);
  /* 2^100 - 2^50 */ for (i = 2;i < 50;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }
  /* 2^100 - 2^0 */ fmul(z2_100_0,t1,z2_50_0);

  /* 2^101 - 2^1 */ fsquare(t1,z2_100_0);
  /* 2^102 - 2^2 */ fsquare(t0,t1);
  /* 2^200 - 2^100 */ for (i = 2;i < 100;i += 2) { fsquare(t1,t0); fsquare(t0,t1); }
  /* 2^200 - 2^0 */ fmul(t1,t0,z2_100_0);

  /* 2^201 - 2^1 */ fsquare(t0,t1);
  /* 2^202 - 2^2 */ fsquare(t1,t0);
  /* 2^250 - 2^50 */ for (i = 2;i < 50;i += 2) { fsquare(t0,t1); fsquare(t1,t0); }
  /* 2^250 - 2^0 */ fmul(t0,t1,z2_50_0);

  /* 2^251 - 2^1 */ fsquare(t1,t0);
  /* 2^252 - 2^2 */ fsquare(t0,t1);
  /* 2^253 - 2^3 */ fsquare(t1,t0);
  /* 2^254 - 2^4 */ fsquare(t0,t1);
  /* 2^255 - 2^5 */ fsquare(t1,t0);
  /* 2^255 - 21 */ fmul(out,t1,z11);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x340, %rsp            # imm = 0x340
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x60(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x9a00
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0xb0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
movq -0x10(%rbp), %rdx
callq 0x7f70
leaq -0x100(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x7f70
leaq -0x2e0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x9a00
leaq -0x150(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
callq 0x7f70
leaq -0x2e0(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0x1a0(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
leaq -0x150(%rbp), %rdx
callq 0x7f70
leaq -0x2e0(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
movl $0x2, -0x334(%rbp)
cmpl $0xa, -0x334(%rbp)
jge 0x7c17
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
movl -0x334(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x334(%rbp)
jmp 0x7bd7
leaq -0x1f0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
leaq -0x1a0(%rbp), %rdx
callq 0x7f70
leaq -0x2e0(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
movl $0x2, -0x334(%rbp)
cmpl $0x14, -0x334(%rbp)
jge 0x7ca1
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
movl -0x334(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x334(%rbp)
jmp 0x7c61
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
leaq -0x1f0(%rbp), %rdx
callq 0x7f70
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
movl $0x2, -0x334(%rbp)
cmpl $0xa, -0x334(%rbp)
jge 0x7d2b
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
movl -0x334(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x334(%rbp)
jmp 0x7ceb
leaq -0x240(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
leaq -0x1a0(%rbp), %rdx
callq 0x7f70
leaq -0x2e0(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
movl $0x2, -0x334(%rbp)
cmpl $0x32, -0x334(%rbp)
jge 0x7db5
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
movl -0x334(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x334(%rbp)
jmp 0x7d75
leaq -0x290(%rbp), %rdi
leaq -0x330(%rbp), %rsi
leaq -0x240(%rbp), %rdx
callq 0x7f70
leaq -0x330(%rbp), %rdi
leaq -0x290(%rbp), %rsi
callq 0x9a00
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
movl $0x2, -0x334(%rbp)
cmpl $0x64, -0x334(%rbp)
jge 0x7e3f
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
movl -0x334(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x334(%rbp)
jmp 0x7dff
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
leaq -0x290(%rbp), %rdx
callq 0x7f70
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
movl $0x2, -0x334(%rbp)
cmpl $0x32, -0x334(%rbp)
jge 0x7ec9
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
movl -0x334(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x334(%rbp)
jmp 0x7e89
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
leaq -0x240(%rbp), %rdx
callq 0x7f70
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
leaq -0x2e0(%rbp), %rdi
leaq -0x330(%rbp), %rsi
callq 0x9a00
leaq -0x330(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x9a00
movq -0x8(%rbp), %rdi
leaq -0x330(%rbp), %rsi
leaq -0x100(%rbp), %rdx
callq 0x7f70
addq $0x340, %rsp            # imm = 0x340
popq %rbp
retq
nopw %cs:(%rax,%rax)