#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ BN_CTX;
typedef int /*<<< orphan*/ const BIGNUM;

/* Variables and functions */
int BN_add(int /*<<< orphan*/ const *, int /*<<< orphan*/ const *,
           int /*<<< orphan*/ const *);
int /*<<< orphan*/ BN_free(int /*<<< orphan*/ const *);
int BN_mod_exp(int /*<<< orphan*/ const *, int /*<<< orphan*/ const *,
               int /*<<< orphan*/ const *, int /*<<< orphan*/ const *,
               int /*<<< orphan*/ *);
int /*<<< orphan*/ *BN_mod_inverse(int /*<<< orphan*/ const *,
                                   int /*<<< orphan*/ const *,
                                   int /*<<< orphan*/ const *,
                                   int /*<<< orphan*/ *);
int /*<<< orphan*/ const *BN_new();
int BN_rshift(int /*<<< orphan*/ const *, int /*<<< orphan*/ const *, int);
int BN_set_word(int /*<<< orphan*/ const *, int const);
int BN_sub(int /*<<< orphan*/ const *, int /*<<< orphan*/ const *,
           int /*<<< orphan*/ const *);
int /*<<< orphan*/ fflush(int /*<<< orphan*/);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *, char *, int);
int /*<<< orphan*/ stderr;
int Fprecompute(BIGNUM *up, BIGNUM *uq, BIGNUM *vp, BIGNUM *vq, const BIGNUM *p,
                const BIGNUM *q, const int l, BN_CTX *bn_ctx) {
  int ret, ok;
  BIGNUM *t1 = NULL, *t2 = NULL, *l_bn = NULL, *one = NULL, *four = NULL;
  if ((t1 = BN_new()) == NULL) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            99);
    fflush(stderr);
    ;
    goto err;
  };
  if ((t2 = BN_new()) == NULL) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            100);
    fflush(stderr);
    ;
    goto err;
  };
  if ((l_bn = BN_new()) == NULL) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            101);
    fflush(stderr);
    ;
    goto err;
  };
  if ((one = BN_new()) == NULL) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            102);
    fflush(stderr);
    ;
    goto err;
  };
  if ((four = BN_new()) == NULL) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            103);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_set_word(l_bn, l));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            104);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_set_word(one, 1));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            105);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_set_word(four, 4));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            106);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_add(t1, p, one));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            108);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_rshift(t1, t1, 2));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            109);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_sub(t2, p, one));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            110);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_mod_exp(vp, t1, l_bn, t2, bn_ctx));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            111);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_add(t1, q, one));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            113);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_rshift(t1, t1, 2));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            114);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_sub(t2, q, one));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            115);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_mod_exp(vq, t1, l_bn, t2, bn_ctx));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            116);
    fflush(stderr);
    ;
    goto err;
  };
  if ((BN_mod_inverse(t1, four, p, bn_ctx)) == NULL) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            118);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_mod_exp(up, t1, vp, p, bn_ctx));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            119);
    fflush(stderr);
    ;
    goto err;
  };
  if ((BN_mod_inverse(t1, four, q, bn_ctx)) == NULL) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            121);
    fflush(stderr);
    ;
    goto err;
  };
  ok = (BN_mod_exp(uq, t1, vq, q, bn_ctx));
  if (ok != 1) {
    fprintf(stderr, "@@@ %s:%d @@@\n",
            "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
            "2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/"
            "daps_h2_mr.c",
            122);
    fflush(stderr);
    ;
    goto err;
  };
  ret = 1;
  goto cleanup;
err:
  ret = 0;
cleanup:
  BN_free(t1);
  BN_free(t2);
  BN_free(l_bn);
  BN_free(one);
  BN_free(four);
  return ret;
}


x86 assembly (clang, -O0):
<Fprecompute>:
push   %rbp
mov    %rsp,%rbp
sub    $0x60,%rsp
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%eax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movq   $0x0,-0x40(%rbp)
movq   $0x0,-0x48(%rbp)
movq   $0x0,-0x50(%rbp)
movq   $0x0,-0x58(%rbp)
movq   $0x0,-0x60(%rbp)
mov    $0x0,%al
call   1060 <BN_new@plt>
mov    %rax,-0x40(%rbp)
cmp    $0x0,%rax
jne    1238 <Fprecompute+0x98>
mov    0x2dd5(%rip),%rax
mov    (%rax),%edi
lea    0xdec(%rip),%rsi
lea    0xdf4(%rip),%rdx
mov    $0x63,%ecx
call   1090 <fprintf@plt>
mov    0x2db4(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    $0x0,%al
call   1060 <BN_new@plt>
mov    %rax,-0x48(%rbp)
cmp    $0x0,%rax
jne    1281 <Fprecompute+0xe1>
mov    0x2d8c(%rip),%rax
mov    (%rax),%edi
lea    0xda3(%rip),%rsi
lea    0xdab(%rip),%rdx
mov    $0x64,%ecx
call   1090 <fprintf@plt>
mov    0x2d6b(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    $0x0,%al
call   1060 <BN_new@plt>
mov    %rax,-0x50(%rbp)
cmp    $0x0,%rax
jne    12ca <Fprecompute+0x12a>
mov    0x2d43(%rip),%rax
mov    (%rax),%edi
lea    0xd5a(%rip),%rsi
lea    0xd62(%rip),%rdx
mov    $0x65,%ecx
call   1090 <fprintf@plt>
mov    0x2d22(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    $0x0,%al
call   1060 <BN_new@plt>
mov    %rax,-0x58(%rbp)
cmp    $0x0,%rax
jne    1313 <Fprecompute+0x173>
mov    0x2cfa(%rip),%rax
mov    (%rax),%edi
lea    0xd11(%rip),%rsi
lea    0xd19(%rip),%rdx
mov    $0x66,%ecx
call   1090 <fprintf@plt>
mov    0x2cd9(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    $0x0,%al
call   1060 <BN_new@plt>
mov    %rax,-0x60(%rbp)
cmp    $0x0,%rax
jne    135c <Fprecompute+0x1bc>
mov    0x2cb1(%rip),%rax
mov    (%rax),%edi
lea    0xcc8(%rip),%rsi
lea    0xcd0(%rip),%rdx
mov    $0x67,%ecx
call   1090 <fprintf@plt>
mov    0x2c90(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x50(%rbp),%rdi
mov    0x10(%rbp),%esi
call   1040 <BN_set_word@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     13a9 <Fprecompute+0x209>
mov    0x2c64(%rip),%rax
mov    (%rax),%edi
lea    0xc7b(%rip),%rsi
lea    0xc83(%rip),%rdx
mov    $0x68,%ecx
call   1090 <fprintf@plt>
mov    0x2c43(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x58(%rbp),%rdi
mov    $0x1,%esi
call   1040 <BN_set_word@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     13f8 <Fprecompute+0x258>
mov    0x2c15(%rip),%rax
mov    (%rax),%edi
lea    0xc2c(%rip),%rsi
lea    0xc34(%rip),%rdx
mov    $0x69,%ecx
call   1090 <fprintf@plt>
mov    0x2bf4(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x60(%rbp),%rdi
mov    $0x4,%esi
call   1040 <BN_set_word@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     1447 <Fprecompute+0x2a7>
mov    0x2bc6(%rip),%rax
mov    (%rax),%edi
lea    0xbdd(%rip),%rsi
lea    0xbe5(%rip),%rdx
mov    $0x6a,%ecx
call   1090 <fprintf@plt>
mov    0x2ba5(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x40(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x58(%rbp),%rdx
call   1030 <BN_add@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     1499 <Fprecompute+0x2f9>
mov    0x2b74(%rip),%rax
mov    (%rax),%edi
lea    0xb8b(%rip),%rsi
lea    0xb93(%rip),%rdx
mov    $0x6c,%ecx
call   1090 <fprintf@plt>
mov    0x2b53(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x40(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    $0x2,%edx
call   10c0 <BN_rshift@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     14ec <Fprecompute+0x34c>
mov    0x2b21(%rip),%rax
mov    (%rax),%edi
lea    0xb38(%rip),%rsi
lea    0xb40(%rip),%rdx
mov    $0x6d,%ecx
call   1090 <fprintf@plt>
mov    0x2b00(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x48(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x58(%rbp),%rdx
call   1070 <BN_sub@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     153e <Fprecompute+0x39e>
mov    0x2acf(%rip),%rax
mov    (%rax),%edi
lea    0xae6(%rip),%rsi
lea    0xaee(%rip),%rdx
mov    $0x6e,%ecx
call   1090 <fprintf@plt>
mov    0x2aae(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x18(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    -0x50(%rbp),%rdx
mov    -0x48(%rbp),%rcx
mov    0x18(%rbp),%r8
call   10a0 <BN_mod_exp@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     1598 <Fprecompute+0x3f8>
mov    0x2a75(%rip),%rax
mov    (%rax),%edi
lea    0xa8c(%rip),%rsi
lea    0xa94(%rip),%rdx
mov    $0x6f,%ecx
call   1090 <fprintf@plt>
mov    0x2a54(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x40(%rbp),%rdi
mov    -0x30(%rbp),%rsi
mov    -0x58(%rbp),%rdx
call   1030 <BN_add@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     15ea <Fprecompute+0x44a>
mov    0x2a23(%rip),%rax
mov    (%rax),%edi
lea    0xa3a(%rip),%rsi
lea    0xa42(%rip),%rdx
mov    $0x71,%ecx
call   1090 <fprintf@plt>
mov    0x2a02(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x40(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    $0x2,%edx
call   10c0 <BN_rshift@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     163d <Fprecompute+0x49d>
mov    0x29d0(%rip),%rax
mov    (%rax),%edi
lea    0x9e7(%rip),%rsi
lea    0x9ef(%rip),%rdx
mov    $0x72,%ecx
call   1090 <fprintf@plt>
mov    0x29af(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x48(%rbp),%rdi
mov    -0x30(%rbp),%rsi
mov    -0x58(%rbp),%rdx
call   1070 <BN_sub@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     168f <Fprecompute+0x4ef>
mov    0x297e(%rip),%rax
mov    (%rax),%edi
lea    0x995(%rip),%rsi
lea    0x99d(%rip),%rdx
mov    $0x73,%ecx
call   1090 <fprintf@plt>
mov    0x295d(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x20(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    -0x50(%rbp),%rdx
mov    -0x48(%rbp),%rcx
mov    0x18(%rbp),%r8
call   10a0 <BN_mod_exp@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     16e9 <Fprecompute+0x549>
mov    0x2924(%rip),%rax
mov    (%rax),%edi
lea    0x93b(%rip),%rsi
lea    0x943(%rip),%rdx
mov    $0x74,%ecx
call   1090 <fprintf@plt>
mov    0x2903(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x40(%rbp),%rdi
mov    -0x60(%rbp),%rsi
mov    -0x28(%rbp),%rdx
mov    0x18(%rbp),%rcx
call   1050 <BN_mod_inverse@plt>
cmp    $0x0,%rax
jne    173c <Fprecompute+0x59c>
mov    0x28d1(%rip),%rax
mov    (%rax),%edi
lea    0x8e8(%rip),%rsi
lea    0x8f0(%rip),%rdx
mov    $0x76,%ecx
call   1090 <fprintf@plt>
mov    0x28b0(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x8(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    -0x18(%rbp),%rdx
mov    -0x28(%rbp),%rcx
mov    0x18(%rbp),%r8
call   10a0 <BN_mod_exp@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     1796 <Fprecompute+0x5f6>
mov    0x2877(%rip),%rax
mov    (%rax),%edi
lea    0x88e(%rip),%rsi
lea    0x896(%rip),%rdx
mov    $0x77,%ecx
call   1090 <fprintf@plt>
mov    0x2856(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x40(%rbp),%rdi
mov    -0x60(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    0x18(%rbp),%rcx
call   1050 <BN_mod_inverse@plt>
cmp    $0x0,%rax
jne    17e9 <Fprecompute+0x649>
mov    0x2824(%rip),%rax
mov    (%rax),%edi
lea    0x83b(%rip),%rsi
lea    0x843(%rip),%rdx
mov    $0x79,%ecx
call   1090 <fprintf@plt>
mov    0x2803(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
mov    -0x10(%rbp),%rdi
mov    -0x40(%rbp),%rsi
mov    -0x20(%rbp),%rdx
mov    -0x30(%rbp),%rcx
mov    0x18(%rbp),%r8
call   10a0 <BN_mod_exp@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x1,-0x38(%rbp)
je     1843 <Fprecompute+0x6a3>
mov    0x27ca(%rip),%rax
mov    (%rax),%edi
lea    0x7e1(%rip),%rsi
lea    0x7e9(%rip),%rdx
mov    $0x7a,%ecx
call   1090 <fprintf@plt>
mov    0x27a9(%rip),%rax
mov    (%rax),%edi
call   10b0 <fflush@plt>
jmp    184f <Fprecompute+0x6af>
movl   $0x1,-0x34(%rbp)
jmp    1856 <Fprecompute+0x6b6>
movl   $0x0,-0x34(%rbp)
mov    -0x40(%rbp),%rdi
call   1080 <BN_free@plt>
mov    -0x48(%rbp),%rdi
call   1080 <BN_free@plt>
mov    -0x50(%rbp),%rdi
call   1080 <BN_free@plt>
mov    -0x58(%rbp),%rdi
call   1080 <BN_free@plt>
mov    -0x60(%rbp),%rdi
call   1080 <BN_free@plt>
mov    -0x34(%rbp),%eax
add    $0x60,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Fprecompute>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x48,%rsp
mov    %r9,%r12
mov    %r8,%rbx
mov    %rcx,%r14
mov    %rdx,%rbp
mov    %rsi,%r15
mov    %rdi,0x40(%rsp)
xor    %r13d,%r13d
xor    %eax,%eax
call   1060 <BN_new@plt>
mov    %rax,0x8(%rsp)
test   %rax,%rax
je     143c <Fprecompute+0x29c>
mov    %rbp,0x30(%rsp)
mov    %rbx,0x20(%rsp)
xor    %eax,%eax
call   1060 <BN_new@plt>
test   %rax,%rax
je     144b <Fprecompute+0x2ab>
mov    %rax,%r13
mov    %r15,0x38(%rsp)
xor    %eax,%eax
call   1060 <BN_new@plt>
test   %rax,%rax
je     1462 <Fprecompute+0x2c2>
mov    %rax,%rbx
mov    %r14,0x28(%rsp)
mov    %r12,0x18(%rsp)
xor    %r12d,%r12d
xor    %eax,%eax
call   1060 <BN_new@plt>
test   %rax,%rax
je     146e <Fprecompute+0x2ce>
mov    %rax,%r15
xor    %eax,%eax
call   1060 <BN_new@plt>
test   %rax,%rax
mov    0x8(%rsp),%r14
je     14db <Fprecompute+0x33b>
mov    %rax,%r12
mov    0x80(%rsp),%esi
mov    %rbx,%rdi
call   1040 <BN_set_word@plt>
mov    $0x68,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    %r15,%rdi
mov    $0x1,%esi
call   1040 <BN_set_word@plt>
mov    $0x69,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    %r12,%rdi
mov    $0x4,%esi
call   1040 <BN_set_word@plt>
mov    $0x6a,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    %r14,%rdi
mov    0x20(%rsp),%rsi
mov    %r15,%rdx
call   1030 <BN_add@plt>
mov    $0x6c,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    %r14,%rdi
mov    %r14,%rsi
mov    $0x2,%edx
call   10c0 <BN_rshift@plt>
mov    $0x6d,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    %r13,%rdi
mov    0x20(%rsp),%rsi
mov    %r15,%rdx
call   1070 <BN_sub@plt>
mov    $0x6e,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    0x88(%rsp),%rbp
mov    0x30(%rsp),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    %r13,%rcx
mov    %rbp,%r8
call   10a0 <BN_mod_exp@plt>
mov    $0x6f,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    %r14,%rdi
mov    0x18(%rsp),%rsi
mov    %r15,%rdx
call   1030 <BN_add@plt>
mov    $0x71,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    %r14,%rdi
mov    %r14,%rsi
mov    $0x2,%edx
call   10c0 <BN_rshift@plt>
mov    $0x72,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    %r13,%rdi
mov    0x18(%rsp),%rsi
mov    %r15,%rdx
call   1070 <BN_sub@plt>
mov    $0x73,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    0x28(%rsp),%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
mov    %r13,%rcx
mov    %rbp,%r8
call   10a0 <BN_mod_exp@plt>
mov    $0x74,%ecx
cmp    $0x1,%eax
jne    147b <Fprecompute+0x2db>
mov    %rbx,0x10(%rsp)
mov    %r14,%rdi
mov    %r12,%rsi
mov    0x20(%rsp),%rdx
mov    %rbp,%rcx
call   1050 <BN_mod_inverse@plt>
test   %rax,%rax
je     14e5 <Fprecompute+0x345>
mov    0x40(%rsp),%rdi
mov    0x8(%rsp),%rsi
mov    0x30(%rsp),%rdx
mov    0x20(%rsp),%rcx
mov    %rbp,%r8
call   10a0 <BN_mod_exp@plt>
mov    $0x77,%ecx
cmp    $0x1,%eax
jne    14f1 <Fprecompute+0x351>
mov    0x8(%rsp),%rdi
mov    %r12,%rsi
mov    0x18(%rsp),%rdx
mov    %rbp,%rcx
call   1050 <BN_mod_inverse@plt>
test   %rax,%rax
je     14ec <Fprecompute+0x34c>
mov    0x38(%rsp),%rdi
mov    0x8(%rsp),%r14
mov    %r14,%rsi
mov    0x28(%rsp),%rdx
mov    0x18(%rsp),%rcx
mov    %rbp,%r8
call   10a0 <BN_mod_exp@plt>
mov    $0x7a,%ecx
mov    $0x1,%ebp
cmp    $0x1,%eax
mov    0x10(%rsp),%rbx
jne    147b <Fprecompute+0x2db>
jmp    14a2 <Fprecompute+0x302>
mov    $0x63,%ecx
xor    %ebx,%ebx
xor    %r15d,%r15d
xor    %r12d,%r12d
jmp    1476 <Fprecompute+0x2d6>
mov    $0x64,%ecx
xor    %r13d,%r13d
xor    %r15d,%r15d
xor    %r12d,%r12d
mov    0x8(%rsp),%r14
xor    %ebx,%ebx
jmp    147b <Fprecompute+0x2db>
mov    $0x65,%ecx
xor    %ebx,%ebx
xor    %r12d,%r12d
jmp    1473 <Fprecompute+0x2d3>
mov    $0x66,%ecx
xor    %r15d,%r15d
mov    0x8(%rsp),%r14
mov    0x2b5e(%rip),%rbp
mov    0x0(%rbp),%edi
lea    0xb74(%rip),%rsi
lea    0xb7c(%rip),%rdx
call   1090 <fprintf@plt>
mov    0x0(%rbp),%edi
call   10b0 <fflush@plt>
xor    %ebp,%ebp
mov    %r14,%rdi
call   1080 <BN_free@plt>
mov    %r13,%rdi
call   1080 <BN_free@plt>
mov    %rbx,%rdi
call   1080 <BN_free@plt>
mov    %r15,%rdi
call   1080 <BN_free@plt>
mov    %r12,%rdi
call   1080 <BN_free@plt>
mov    %ebp,%eax
add    $0x48,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x67,%ecx
xor    %r12d,%r12d
jmp    147b <Fprecompute+0x2db>
mov    $0x76,%ecx
jmp    14f1 <Fprecompute+0x351>
mov    $0x79,%ecx
mov    0x8(%rsp),%r14
mov    0x10(%rsp),%rbx
jmp    147b <Fprecompute+0x2db>

LLVM IR (-O0):
@stderr = global i32 0
@.str = [15 x i8] c"@@@ %s:%d @@@\0A\00"
@.str.1 = [135 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/daps_h2_mr.c\00"
define i32 @Fprecompute(i32* %0, i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32 %6, i32* %7) {
%9 = alloca i32*
%10 = alloca i32*
%11 = alloca i32*
%12 = alloca i32*
%13 = alloca i32*
%14 = alloca i32*
%15 = alloca i32
%16 = alloca i32*
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32*
%20 = alloca i32*
%21 = alloca i32*
%22 = alloca i32*
%23 = alloca i32*
store i32* %0, i32** %9
store i32* %1, i32** %10
store i32* %2, i32** %11
store i32* %3, i32** %12
store i32* %4, i32** %13
store i32* %5, i32** %14
store i32 %6, i32* %15
store i32* %7, i32** %16
store i32* null, i32** %19
store i32* null, i32** %20
store i32* null, i32** %21
store i32* null, i32** %22
store i32* null, i32** %23
%24 = call i32* (...) @BN_new()
store i32* %24, i32** %19
%25 = icmp eq i32* %24, null
br i1 %25, label %26, label %31
26: ; preds = %8
%27 = load i32, i32* @stderr
%28 = call i32 @fprintf(i32 %27, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 99)
%29 = load i32, i32* @stderr
%30 = call i32 @fflush(i32 %29)
br label %245
31: ; preds = %8
%32 = call i32* (...) @BN_new()
store i32* %32, i32** %20
%33 = icmp eq i32* %32, null
br i1 %33, label %34, label %39
34: ; preds = %31
%35 = load i32, i32* @stderr
%36 = call i32 @fprintf(i32 %35, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 100)
%37 = load i32, i32* @stderr
%38 = call i32 @fflush(i32 %37)
br label %245
39: ; preds = %31
%40 = call i32* (...) @BN_new()
store i32* %40, i32** %21
%41 = icmp eq i32* %40, null
br i1 %41, label %42, label %47
42: ; preds = %39
%43 = load i32, i32* @stderr
%44 = call i32 @fprintf(i32 %43, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 101)
%45 = load i32, i32* @stderr
%46 = call i32 @fflush(i32 %45)
br label %245
47: ; preds = %39
%48 = call i32* (...) @BN_new()
store i32* %48, i32** %22
%49 = icmp eq i32* %48, null
br i1 %49, label %50, label %55
50: ; preds = %47
%51 = load i32, i32* @stderr
%52 = call i32 @fprintf(i32 %51, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 102)
%53 = load i32, i32* @stderr
%54 = call i32 @fflush(i32 %53)
br label %245
55: ; preds = %47
%56 = call i32* (...) @BN_new()
store i32* %56, i32** %23
%57 = icmp eq i32* %56, null
br i1 %57, label %58, label %63
58: ; preds = %55
%59 = load i32, i32* @stderr
%60 = call i32 @fprintf(i32 %59, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 103)
%61 = load i32, i32* @stderr
%62 = call i32 @fflush(i32 %61)
br label %245
63: ; preds = %55
%64 = load i32*, i32** %21
%65 = load i32, i32* %15
%66 = call i32 @BN_set_word(i32* %64, i32 %65)
store i32 %66, i32* %18
%67 = load i32, i32* %18
%68 = icmp ne i32 %67, 1
br i1 %68, label %69, label %74
69: ; preds = %63
%70 = load i32, i32* @stderr
%71 = call i32 @fprintf(i32 %70, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 104)
%72 = load i32, i32* @stderr
%73 = call i32 @fflush(i32 %72)
br label %245
74: ; preds = %63
%75 = load i32*, i32** %22
%76 = call i32 @BN_set_word(i32* %75, i32 1)
store i32 %76, i32* %18
%77 = load i32, i32* %18
%78 = icmp ne i32 %77, 1
br i1 %78, label %79, label %84
79: ; preds = %74
%80 = load i32, i32* @stderr
%81 = call i32 @fprintf(i32 %80, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 105)
%82 = load i32, i32* @stderr
%83 = call i32 @fflush(i32 %82)
br label %245
84: ; preds = %74
%85 = load i32*, i32** %23
%86 = call i32 @BN_set_word(i32* %85, i32 4)
store i32 %86, i32* %18
%87 = load i32, i32* %18
%88 = icmp ne i32 %87, 1
br i1 %88, label %89, label %94
89: ; preds = %84
%90 = load i32, i32* @stderr
%91 = call i32 @fprintf(i32 %90, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 106)
%92 = load i32, i32* @stderr
%93 = call i32 @fflush(i32 %92)
br label %245
94: ; preds = %84
%95 = load i32*, i32** %19
%96 = load i32*, i32** %13
%97 = load i32*, i32** %22
%98 = call i32 @BN_add(i32* %95, i32* %96, i32* %97)
store i32 %98, i32* %18
%99 = load i32, i32* %18
%100 = icmp ne i32 %99, 1
br i1 %100, label %101, label %106
101: ; preds = %94
%102 = load i32, i32* @stderr
%103 = call i32 @fprintf(i32 %102, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 108)
%104 = load i32, i32* @stderr
%105 = call i32 @fflush(i32 %104)
br label %245
106: ; preds = %94
%107 = load i32*, i32** %19
%108 = load i32*, i32** %19
%109 = call i32 @BN_rshift(i32* %107, i32* %108, i32 2)
store i32 %109, i32* %18
%110 = load i32, i32* %18
%111 = icmp ne i32 %110, 1
br i1 %111, label %112, label %117
112: ; preds = %106
%113 = load i32, i32* @stderr
%114 = call i32 @fprintf(i32 %113, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 109)
%115 = load i32, i32* @stderr
%116 = call i32 @fflush(i32 %115)
br label %245
117: ; preds = %106
%118 = load i32*, i32** %20
%119 = load i32*, i32** %13
%120 = load i32*, i32** %22
%121 = call i32 @BN_sub(i32* %118, i32* %119, i32* %120)
store i32 %121, i32* %18
%122 = load i32, i32* %18
%123 = icmp ne i32 %122, 1
br i1 %123, label %124, label %129
124: ; preds = %117
%125 = load i32, i32* @stderr
%126 = call i32 @fprintf(i32 %125, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 110)
%127 = load i32, i32* @stderr
%128 = call i32 @fflush(i32 %127)
br label %245
129: ; preds = %117
%130 = load i32*, i32** %11
%131 = load i32*, i32** %19
%132 = load i32*, i32** %21
%133 = load i32*, i32** %20
%134 = load i32*, i32** %16
%135 = call i32 @BN_mod_exp(i32* %130, i32* %131, i32* %132, i32* %133, i32* %134)
store i32 %135, i32* %18
%136 = load i32, i32* %18
%137 = icmp ne i32 %136, 1
br i1 %137, label %138, label %143
138: ; preds = %129
%139 = load i32, i32* @stderr
%140 = call i32 @fprintf(i32 %139, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 111)
%141 = load i32, i32* @stderr
%142 = call i32 @fflush(i32 %141)
br label %245
143: ; preds = %129
%144 = load i32*, i32** %19
%145 = load i32*, i32** %14
%146 = load i32*, i32** %22
%147 = call i32 @BN_add(i32* %144, i32* %145, i32* %146)
store i32 %147, i32* %18
%148 = load i32, i32* %18
%149 = icmp ne i32 %148, 1
br i1 %149, label %150, label %155
150: ; preds = %143
%151 = load i32, i32* @stderr
%152 = call i32 @fprintf(i32 %151, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 113)
%153 = load i32, i32* @stderr
%154 = call i32 @fflush(i32 %153)
br label %245
155: ; preds = %143
%156 = load i32*, i32** %19
%157 = load i32*, i32** %19
%158 = call i32 @BN_rshift(i32* %156, i32* %157, i32 2)
store i32 %158, i32* %18
%159 = load i32, i32* %18
%160 = icmp ne i32 %159, 1
br i1 %160, label %161, label %166
161: ; preds = %155
%162 = load i32, i32* @stderr
%163 = call i32 @fprintf(i32 %162, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 114)
%164 = load i32, i32* @stderr
%165 = call i32 @fflush(i32 %164)
br label %245
166: ; preds = %155
%167 = load i32*, i32** %20
%168 = load i32*, i32** %14
%169 = load i32*, i32** %22
%170 = call i32 @BN_sub(i32* %167, i32* %168, i32* %169)
store i32 %170, i32* %18
%171 = load i32, i32* %18
%172 = icmp ne i32 %171, 1
br i1 %172, label %173, label %178
173: ; preds = %166
%174 = load i32, i32* @stderr
%175 = call i32 @fprintf(i32 %174, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 115)
%176 = load i32, i32* @stderr
%177 = call i32 @fflush(i32 %176)
br label %245
178: ; preds = %166
%179 = load i32*, i32** %12
%180 = load i32*, i32** %19
%181 = load i32*, i32** %21
%182 = load i32*, i32** %20
%183 = load i32*, i32** %16
%184 = call i32 @BN_mod_exp(i32* %179, i32* %180, i32* %181, i32* %182, i32* %183)
store i32 %184, i32* %18
%185 = load i32, i32* %18
%186 = icmp ne i32 %185, 1
br i1 %186, label %187, label %192
187: ; preds = %178
%188 = load i32, i32* @stderr
%189 = call i32 @fprintf(i32 %188, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 116)
%190 = load i32, i32* @stderr
%191 = call i32 @fflush(i32 %190)
br label %245
192: ; preds = %178
%193 = load i32*, i32** %19
%194 = load i32*, i32** %23
%195 = load i32*, i32** %13
%196 = load i32*, i32** %16
%197 = call i32* @BN_mod_inverse(i32* %193, i32* %194, i32* %195, i32* %196)
%198 = icmp eq i32* %197, null
br i1 %198, label %199, label %204
199: ; preds = %192
%200 = load i32, i32* @stderr
%201 = call i32 @fprintf(i32 %200, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 118)
%202 = load i32, i32* @stderr
%203 = call i32 @fflush(i32 %202)
br label %245
204: ; preds = %192
%205 = load i32*, i32** %9
%206 = load i32*, i32** %19
%207 = load i32*, i32** %11
%208 = load i32*, i32** %13
%209 = load i32*, i32** %16
%210 = call i32 @BN_mod_exp(i32* %205, i32* %206, i32* %207, i32* %208, i32* %209)
store i32 %210, i32* %18
%211 = load i32, i32* %18
%212 = icmp ne i32 %211, 1
br i1 %212, label %213, label %218
213: ; preds = %204
%214 = load i32, i32* @stderr
%215 = call i32 @fprintf(i32 %214, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 119)
%216 = load i32, i32* @stderr
%217 = call i32 @fflush(i32 %216)
br label %245
218: ; preds = %204
%219 = load i32*, i32** %19
%220 = load i32*, i32** %23
%221 = load i32*, i32** %14
%222 = load i32*, i32** %16
%223 = call i32* @BN_mod_inverse(i32* %219, i32* %220, i32* %221, i32* %222)
%224 = icmp eq i32* %223, null
br i1 %224, label %225, label %230
225: ; preds = %218
%226 = load i32, i32* @stderr
%227 = call i32 @fprintf(i32 %226, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 121)
%228 = load i32, i32* @stderr
%229 = call i32 @fflush(i32 %228)
br label %245
230: ; preds = %218
%231 = load i32*, i32** %10
%232 = load i32*, i32** %19
%233 = load i32*, i32** %12
%234 = load i32*, i32** %14
%235 = load i32*, i32** %16
%236 = call i32 @BN_mod_exp(i32* %231, i32* %232, i32* %233, i32* %234, i32* %235)
store i32 %236, i32* %18
%237 = load i32, i32* %18
%238 = icmp ne i32 %237, 1
br i1 %238, label %239, label %244
239: ; preds = %230
%240 = load i32, i32* @stderr
%241 = call i32 @fprintf(i32 %240, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 122)
%242 = load i32, i32* @stderr
%243 = call i32 @fflush(i32 %242)
br label %245
244: ; preds = %230
store i32 1, i32* %17
br label %246
245: ; preds = %239, %225, %213, %199, %187, %173, %161, %150, %138, %124, %112, %101, %89, %79, %69, %58, %50, %42, %34, %26
store i32 0, i32* %17
br label %246
246: ; preds = %245, %244
%247 = load i32*, i32** %19
%248 = call i32 @BN_free(i32* %247)
%249 = load i32*, i32** %20
%250 = call i32 @BN_free(i32* %249)
%251 = load i32*, i32** %21
%252 = call i32 @BN_free(i32* %251)
%253 = load i32*, i32** %22
%254 = call i32 @BN_free(i32* %253)
%255 = load i32*, i32** %23
%256 = call i32 @BN_free(i32* %255)
%257 = load i32, i32* %17
ret i32 %257
}

LLVM IR (-O2):
@stderr = global i32 0
@.str = [15 x i8] c"@@@ %s:%d @@@\0A\00"
@.str.1 = [135 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/dstebila/daps/refs/heads/master/daps_h2_mr.c\00"
define i32 @Fprecompute(i32* %0, i32* %1, i32* %2, i32* %3, i32* %4, i32* %5, i32 %6, i32* %7) {
%9 = tail call i32* (...) @BN_new()
%10 = icmp eq i32* %9, null
br i1 %10, label %68, label %11
11: ; preds = %8
%12 = tail call i32* (...) @BN_new()
%13 = icmp eq i32* %12, null
br i1 %13, label %68, label %14
14: ; preds = %11
%15 = tail call i32* (...) @BN_new()
%16 = icmp eq i32* %15, null
br i1 %16, label %68, label %17
17: ; preds = %14
%18 = tail call i32* (...) @BN_new()
%19 = icmp eq i32* %18, null
br i1 %19, label %68, label %20
20: ; preds = %17
%21 = tail call i32* (...) @BN_new()
%22 = icmp eq i32* %21, null
br i1 %22, label %68, label %23
23: ; preds = %20
%24 = tail call i32 @BN_set_word(i32* %15, i32 %6)
%25 = icmp eq i32 %24, 1
br i1 %25, label %26, label %68
26: ; preds = %23
%27 = tail call i32 @BN_set_word(i32* %18, i32 1)
%28 = icmp eq i32 %27, 1
br i1 %28, label %29, label %68
29: ; preds = %26
%30 = tail call i32 @BN_set_word(i32* %21, i32 4)
%31 = icmp eq i32 %30, 1
br i1 %31, label %32, label %68
32: ; preds = %29
%33 = tail call i32 @BN_add(i32* %9, i32* %4, i32* %18)
%34 = icmp eq i32 %33, 1
br i1 %34, label %35, label %68
35: ; preds = %32
%36 = tail call i32 @BN_rshift(i32* %9, i32* %9, i32 2)
%37 = icmp eq i32 %36, 1
br i1 %37, label %38, label %68
38: ; preds = %35
%39 = tail call i32 @BN_sub(i32* %12, i32* %4, i32* %18)
%40 = icmp eq i32 %39, 1
br i1 %40, label %41, label %68
41: ; preds = %38
%42 = tail call i32 @BN_mod_exp(i32* %2, i32* %9, i32* %15, i32* %12, i32* %7)
%43 = icmp eq i32 %42, 1
br i1 %43, label %44, label %68
44: ; preds = %41
%45 = tail call i32 @BN_add(i32* %9, i32* %5, i32* %18)
%46 = icmp eq i32 %45, 1
br i1 %46, label %47, label %68
47: ; preds = %44
%48 = tail call i32 @BN_rshift(i32* %9, i32* %9, i32 2)
%49 = icmp eq i32 %48, 1
br i1 %49, label %50, label %68
50: ; preds = %47
%51 = tail call i32 @BN_sub(i32* %12, i32* %5, i32* %18)
%52 = icmp eq i32 %51, 1
br i1 %52, label %53, label %68
53: ; preds = %50
%54 = tail call i32 @BN_mod_exp(i32* %3, i32* %9, i32* %15, i32* %12, i32* %7)
%55 = icmp eq i32 %54, 1
br i1 %55, label %56, label %68
56: ; preds = %53
%57 = tail call i32* @BN_mod_inverse(i32* %9, i32* %21, i32* %4, i32* %7)
%58 = icmp eq i32* %57, null
br i1 %58, label %68, label %59
59: ; preds = %56
%60 = tail call i32 @BN_mod_exp(i32* %0, i32* %9, i32* %2, i32* %4, i32* %7)
%61 = icmp eq i32 %60, 1
br i1 %61, label %62, label %68
62: ; preds = %59
%63 = tail call i32* @BN_mod_inverse(i32* %9, i32* %21, i32* %5, i32* %7)
%64 = icmp eq i32* %63, null
br i1 %64, label %68, label %65
65: ; preds = %62
%66 = tail call i32 @BN_mod_exp(i32* %1, i32* %9, i32* %3, i32* %5, i32* %7)
%67 = icmp eq i32 %66, 1
br i1 %67, label %78, label %68
68: ; preds = %65, %62, %59, %56, %53, %50, %47, %44, %41, %38, %35, %32, %29, %26, %23, %20, %17, %14, %11, %8
%69 = phi i32 [ 99, %8 ], [ 100, %11 ], [ 101, %14 ], [ 102, %17 ], [ 103, %20 ], [ 104, %23 ], [ 105, %26 ], [ 106, %29 ], [ 108, %32 ], [ 109, %35 ], [ 110, %38 ], [ 111, %41 ], [ 113, %44 ], [ 114, %47 ], [ 115, %50 ], [ 116, %53 ], [ 118, %56 ], [ 119, %59 ], [ 121, %62 ], [ 122, %65 ]
%70 = phi i32* [ null, %8 ], [ null, %11 ], [ %12, %14 ], [ %12, %17 ], [ %12, %20 ], [ %12, %23 ], [ %12, %26 ], [ %12, %29 ], [ %12, %32 ], [ %12, %35 ], [ %12, %38 ], [ %12, %41 ], [ %12, %44 ], [ %12, %47 ], [ %12, %50 ], [ %12, %53 ], [ %12, %56 ], [ %12, %59 ], [ %12, %62 ], [ %12, %65 ]
%71 = phi i32* [ null, %8 ], [ null, %11 ], [ null, %14 ], [ %15, %17 ], [ %15, %20 ], [ %15, %23 ], [ %15, %26 ], [ %15, %29 ], [ %15, %32 ], [ %15, %35 ], [ %15, %38 ], [ %15, %41 ], [ %15, %44 ], [ %15, %47 ], [ %15, %50 ], [ %15, %53 ], [ %15, %56 ], [ %15, %59 ], [ %15, %62 ], [ %15, %65 ]
%72 = phi i32* [ null, %8 ], [ null, %11 ], [ null, %14 ], [ null, %17 ], [ %18, %20 ], [ %18, %23 ], [ %18, %26 ], [ %18, %29 ], [ %18, %32 ], [ %18, %35 ], [ %18, %38 ], [ %18, %41 ], [ %18, %44 ], [ %18, %47 ], [ %18, %50 ], [ %18, %53 ], [ %18, %56 ], [ %18, %59 ], [ %18, %62 ], [ %18, %65 ]
%73 = phi i32* [ null, %8 ], [ null, %11 ], [ null, %14 ], [ null, %17 ], [ null, %20 ], [ %21, %23 ], [ %21, %26 ], [ %21, %29 ], [ %21, %32 ], [ %21, %35 ], [ %21, %38 ], [ %21, %41 ], [ %21, %44 ], [ %21, %47 ], [ %21, %50 ], [ %21, %53 ], [ %21, %56 ], [ %21, %59 ], [ %21, %62 ], [ %21, %65 ]
%74 = load i32, i32* @stderr
%75 = tail call i32 @fprintf(i32 %74, i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str, i64 0, i64 0), i8* getelementptr inbounds ([135 x i8], [135 x i8]* @.str.1, i64 0, i64 0), i32 %69)
%76 = load i32, i32* @stderr
%77 = tail call i32 @fflush(i32 %76)
br label %78
78: ; preds = %68, %65
%79 = phi i32 [ 1, %65 ], [ 0, %68 ]
%80 = phi i32* [ %12, %65 ], [ %70, %68 ]
%81 = phi i32* [ %15, %65 ], [ %71, %68 ]
%82 = phi i32* [ %18, %65 ], [ %72, %68 ]
%83 = phi i32* [ %21, %65 ], [ %73, %68 ]
%84 = tail call i32 @BN_free(i32* %9)
%85 = tail call i32 @BN_free(i32* %80)
%86 = tail call i32 @BN_free(i32* %81)
%87 = tail call i32 @BN_free(i32* %82)
%88 = tail call i32 @BN_free(i32* %83)
ret i32 %79
}