#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*/ BIGNUM;

/* Variables and functions */
int /*<<< orphan*/ BN_free(int /*<<< orphan*/ *);
int /*<<< orphan*/ parseBN(int /*<<< orphan*/ **, char *);
int /*<<< orphan*/ test_BN_abs_eq_word(char *, int, char *, char *,
                                       int /*<<< orphan*/ *, int);
int /*<<< orphan*/ test_BN_eq_word(char *, int, char *, char *,
                                   int /*<<< orphan*/ *, int);
int /*<<< orphan*/ test_BN_eq_zero(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_BN_even(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_BN_ge_zero(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_BN_gt_zero(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_BN_le_zero(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_BN_lt_zero(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_BN_ne_zero(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_BN_odd(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_int_eq(char *, int, char *, char *, int /*<<< orphan*/,
                               int);
int test_hex2bn(void) {
  BIGNUM *bn = NULL;
  int st = 0;
  if (!test_int_eq(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1771, "parseBN(&bn, \"0\")", "1", parseBN(&bn, "0"), 1) ||
      !test_BN_eq_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1772, "bn", bn) ||
      !test_BN_ge_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1773, "bn", bn) ||
      !test_BN_even(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1774, "bn", bn))
    goto err;
  BN_free(bn);
  bn = NULL;
  if (!test_int_eq(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1779, "parseBN(&bn, \"256\")", "3", parseBN(&bn, "256"), 3) ||
      !test_BN_eq_word(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1780, "bn", "0x256", bn, 0x256) ||
      !test_BN_ge_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1781, "bn", bn) ||
      !test_BN_gt_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1782, "bn", bn) ||
      !test_BN_ne_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1783, "bn", bn) ||
      !test_BN_even(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1784, "bn", bn))
    goto err;
  BN_free(bn);
  bn = NULL;
  if (!test_int_eq(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1789, "parseBN(&bn, \"-42\")", "3", parseBN(&bn, "-42"), 3) ||
      !test_BN_abs_eq_word(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1790, "bn", "0x42", bn, 0x42) ||
      !test_BN_lt_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1791, "bn", bn) ||
      !test_BN_le_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1792, "bn", bn) ||
      !test_BN_ne_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1793, "bn", bn) ||
      !test_BN_even(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1794, "bn", bn))
    goto err;
  BN_free(bn);
  bn = NULL;
  if (!test_int_eq(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1799, "parseBN(&bn, \"cb\")", "2", parseBN(&bn, "cb"), 2) ||
      !test_BN_eq_word(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1800, "bn", "0xCB", bn, 0xCB) ||
      !test_BN_ge_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1801, "bn", bn) ||
      !test_BN_gt_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1802, "bn", bn) ||
      !test_BN_ne_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1803, "bn", bn) ||
      !test_BN_odd(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1804, "bn", bn))
    goto err;
  BN_free(bn);
  bn = NULL;
  if (!test_int_eq(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1809, "parseBN(&bn, \"-0\")", "2", parseBN(&bn, "-0"), 2) ||
      !test_BN_eq_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1810, "bn", bn) ||
      !test_BN_ge_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1811, "bn", bn) ||
      !test_BN_le_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1812, "bn", bn) ||
      !test_BN_even(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1813, "bn", bn))
    goto err;
  BN_free(bn);
  bn = NULL;
  if (!test_int_eq(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1818, "parseBN(&bn, \"abctrailing garbage is ignored\")", "3",
          parseBN(&bn, "abctrailing garbage is ignored"), 3) ||
      !test_BN_eq_word(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1819, "bn", "0xabc", bn, 0xabc) ||
      !test_BN_ge_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1820, "bn", bn) ||
      !test_BN_gt_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1821, "bn", bn) ||
      !test_BN_ne_zero(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1822, "bn", bn) ||
      !test_BN_even(
          "/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/"
          "2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/"
          "master/Src/OSF/OpenSSL-111/test/bntest.c",
          1823, "bn", bn))
    goto err;
  st = 1;
err:
  BN_free(bn);
  return st;
}


x86 assembly (clang, -O0):
<test_hex2bn>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movq   $0x0,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
lea    -0x8(%rbp),%rdi
lea    0xf37(%rip),%rsi
call   10d0 <parseBN@plt>
mov    %eax,%r8d
lea    0xdff(%rip),%rdi
mov    $0x6eb,%esi
lea    0xe9d(%rip),%rdx
lea    0xea8(%rip),%rcx
mov    $0x1,%r9d
call   1070 <test_int_eq@plt>
cmp    $0x0,%eax
je     1297 <test_hex2bn+0xc7>
mov    -0x8(%rbp),%rcx
lea    0xdcd(%rip),%rdi
mov    $0x6ec,%esi
lea    0xe7f(%rip),%rdx
call   1050 <test_BN_eq_zero@plt>
cmp    $0x0,%eax
je     1297 <test_hex2bn+0xc7>
mov    -0x8(%rbp),%rcx
lea    0xda8(%rip),%rdi
mov    $0x6ed,%esi
lea    0xe5a(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
je     1297 <test_hex2bn+0xc7>
mov    -0x8(%rbp),%rcx
lea    0xd83(%rip),%rdi
mov    $0x6ee,%esi
lea    0xe35(%rip),%rdx
call   10e0 <test_BN_even@plt>
cmp    $0x0,%eax
jne    129c <test_hex2bn+0xcc>
jmp    1802 <test_hex2bn+0x632>
mov    -0x8(%rbp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,-0x8(%rbp)
lea    -0x8(%rbp),%rdi
lea    0xe21(%rip),%rsi
call   10d0 <parseBN@plt>
mov    %eax,%r8d
lea    0xd39(%rip),%rdi
mov    $0x6f3,%esi
lea    0xdee(%rip),%rdx
lea    0xdfb(%rip),%rcx
mov    $0x3,%r9d
call   1070 <test_int_eq@plt>
cmp    $0x0,%eax
je     13b4 <test_hex2bn+0x1e4>
mov    -0x8(%rbp),%r8
lea    0xd07(%rip),%rdi
mov    $0x6f4,%esi
lea    0xdb9(%rip),%rdx
lea    0xdcb(%rip),%rcx
mov    $0x256,%r9d
call   1090 <test_BN_eq_word@plt>
cmp    $0x0,%eax
je     13b4 <test_hex2bn+0x1e4>
mov    -0x8(%rbp),%rcx
lea    0xcd5(%rip),%rdi
mov    $0x6f5,%esi
lea    0xd87(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
je     13b4 <test_hex2bn+0x1e4>
mov    -0x8(%rbp),%rcx
lea    0xcb0(%rip),%rdi
mov    $0x6f6,%esi
lea    0xd62(%rip),%rdx
call   10b0 <test_BN_gt_zero@plt>
cmp    $0x0,%eax
je     13b4 <test_hex2bn+0x1e4>
mov    -0x8(%rbp),%rcx
lea    0xc8b(%rip),%rdi
mov    $0x6f7,%esi
lea    0xd3d(%rip),%rdx
call   1060 <test_BN_ne_zero@plt>
cmp    $0x0,%eax
je     13b4 <test_hex2bn+0x1e4>
mov    -0x8(%rbp),%rcx
lea    0xc66(%rip),%rdi
mov    $0x6f8,%esi
lea    0xd18(%rip),%rdx
call   10e0 <test_BN_even@plt>
cmp    $0x0,%eax
jne    13b9 <test_hex2bn+0x1e9>
jmp    1802 <test_hex2bn+0x632>
mov    -0x8(%rbp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,-0x8(%rbp)
lea    -0x8(%rbp),%rdi
lea    0xd1c(%rip),%rsi
call   10d0 <parseBN@plt>
mov    %eax,%r8d
lea    0xc1c(%rip),%rdi
mov    $0x6fd,%esi
lea    0xced(%rip),%rdx
lea    0xcde(%rip),%rcx
mov    $0x3,%r9d
call   1070 <test_int_eq@plt>
cmp    $0x0,%eax
je     14d1 <test_hex2bn+0x301>
mov    -0x8(%rbp),%r8
lea    0xbea(%rip),%rdi
mov    $0x6fe,%esi
lea    0xc9c(%rip),%rdx
lea    0xccc(%rip),%rcx
mov    $0x42,%r9d
call   1040 <test_BN_abs_eq_word@plt>
cmp    $0x0,%eax
je     14d1 <test_hex2bn+0x301>
mov    -0x8(%rbp),%rcx
lea    0xbb8(%rip),%rdi
mov    $0x6ff,%esi
lea    0xc6a(%rip),%rdx
call   10f0 <test_BN_lt_zero@plt>
cmp    $0x0,%eax
je     14d1 <test_hex2bn+0x301>
mov    -0x8(%rbp),%rcx
lea    0xb93(%rip),%rdi
mov    $0x700,%esi
lea    0xc45(%rip),%rdx
call   10c0 <test_BN_le_zero@plt>
cmp    $0x0,%eax
je     14d1 <test_hex2bn+0x301>
mov    -0x8(%rbp),%rcx
lea    0xb6e(%rip),%rdi
mov    $0x701,%esi
lea    0xc20(%rip),%rdx
call   1060 <test_BN_ne_zero@plt>
cmp    $0x0,%eax
je     14d1 <test_hex2bn+0x301>
mov    -0x8(%rbp),%rcx
lea    0xb49(%rip),%rdi
mov    $0x702,%esi
lea    0xbfb(%rip),%rdx
call   10e0 <test_BN_even@plt>
cmp    $0x0,%eax
jne    14d6 <test_hex2bn+0x306>
jmp    1802 <test_hex2bn+0x632>
mov    -0x8(%rbp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,-0x8(%rbp)
lea    -0x8(%rbp),%rdi
lea    0xc1b(%rip),%rsi
call   10d0 <parseBN@plt>
mov    %eax,%r8d
lea    0xaff(%rip),%rdi
mov    $0x707,%esi
lea    0xbed(%rip),%rdx
lea    0xbdf(%rip),%rcx
mov    $0x2,%r9d
call   1070 <test_int_eq@plt>
cmp    $0x0,%eax
je     15ee <test_hex2bn+0x41e>
mov    -0x8(%rbp),%r8
lea    0xacd(%rip),%rdi
mov    $0x708,%esi
lea    0xb7f(%rip),%rdx
lea    0xbca(%rip),%rcx
mov    $0xcb,%r9d
call   1090 <test_BN_eq_word@plt>
cmp    $0x0,%eax
je     15ee <test_hex2bn+0x41e>
mov    -0x8(%rbp),%rcx
lea    0xa9b(%rip),%rdi
mov    $0x709,%esi
lea    0xb4d(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
je     15ee <test_hex2bn+0x41e>
mov    -0x8(%rbp),%rcx
lea    0xa76(%rip),%rdi
mov    $0x70a,%esi
lea    0xb28(%rip),%rdx
call   10b0 <test_BN_gt_zero@plt>
cmp    $0x0,%eax
je     15ee <test_hex2bn+0x41e>
mov    -0x8(%rbp),%rcx
lea    0xa51(%rip),%rdi
mov    $0x70b,%esi
lea    0xb03(%rip),%rdx
call   1060 <test_BN_ne_zero@plt>
cmp    $0x0,%eax
je     15ee <test_hex2bn+0x41e>
mov    -0x8(%rbp),%rcx
lea    0xa2c(%rip),%rdi
mov    $0x70c,%esi
lea    0xade(%rip),%rdx
call   10a0 <test_BN_odd@plt>
cmp    $0x0,%eax
jne    15f3 <test_hex2bn+0x423>
jmp    1802 <test_hex2bn+0x632>
mov    -0x8(%rbp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,-0x8(%rbp)
lea    -0x8(%rbp),%rdi
lea    0xb19(%rip),%rsi
call   10d0 <parseBN@plt>
mov    %eax,%r8d
lea    0x9e2(%rip),%rdi
mov    $0x711,%esi
lea    0xaeb(%rip),%rdx
lea    0xac2(%rip),%rcx
mov    $0x2,%r9d
call   1070 <test_int_eq@plt>
cmp    $0x0,%eax
je     16d9 <test_hex2bn+0x509>
mov    -0x8(%rbp),%rcx
lea    0x9b0(%rip),%rdi
mov    $0x712,%esi
lea    0xa62(%rip),%rdx
call   1050 <test_BN_eq_zero@plt>
cmp    $0x0,%eax
je     16d9 <test_hex2bn+0x509>
mov    -0x8(%rbp),%rcx
lea    0x98b(%rip),%rdi
mov    $0x713,%esi
lea    0xa3d(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
je     16d9 <test_hex2bn+0x509>
mov    -0x8(%rbp),%rcx
lea    0x966(%rip),%rdi
mov    $0x714,%esi
lea    0xa18(%rip),%rdx
call   10c0 <test_BN_le_zero@plt>
cmp    $0x0,%eax
je     16d9 <test_hex2bn+0x509>
mov    -0x8(%rbp),%rcx
lea    0x941(%rip),%rdi
mov    $0x715,%esi
lea    0x9f3(%rip),%rdx
call   10e0 <test_BN_even@plt>
cmp    $0x0,%eax
jne    16de <test_hex2bn+0x50e>
jmp    1802 <test_hex2bn+0x632>
mov    -0x8(%rbp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,-0x8(%rbp)
lea    -0x8(%rbp),%rdi
lea    0xa60(%rip),%rsi
call   10d0 <parseBN@plt>
mov    %eax,%r8d
lea    0x8f7(%rip),%rdi
mov    $0x71a,%esi
lea    0xa16(%rip),%rdx
lea    0x9b9(%rip),%rcx
mov    $0x3,%r9d
call   1070 <test_int_eq@plt>
cmp    $0x0,%eax
je     17f6 <test_hex2bn+0x626>
mov    -0x8(%rbp),%r8
lea    0x8c5(%rip),%rdi
mov    $0x71b,%esi
lea    0x977(%rip),%rdx
lea    0xa2b(%rip),%rcx
mov    $0xabc,%r9d
call   1090 <test_BN_eq_word@plt>
cmp    $0x0,%eax
je     17f6 <test_hex2bn+0x626>
mov    -0x8(%rbp),%rcx
lea    0x893(%rip),%rdi
mov    $0x71c,%esi
lea    0x945(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
je     17f6 <test_hex2bn+0x626>
mov    -0x8(%rbp),%rcx
lea    0x86e(%rip),%rdi
mov    $0x71d,%esi
lea    0x920(%rip),%rdx
call   10b0 <test_BN_gt_zero@plt>
cmp    $0x0,%eax
je     17f6 <test_hex2bn+0x626>
mov    -0x8(%rbp),%rcx
lea    0x849(%rip),%rdi
mov    $0x71e,%esi
lea    0x8fb(%rip),%rdx
call   1060 <test_BN_ne_zero@plt>
cmp    $0x0,%eax
je     17f6 <test_hex2bn+0x626>
mov    -0x8(%rbp),%rcx
lea    0x824(%rip),%rdi
mov    $0x71f,%esi
lea    0x8d6(%rip),%rdx
call   10e0 <test_BN_even@plt>
cmp    $0x0,%eax
jne    17fb <test_hex2bn+0x62b>
jmp    1802 <test_hex2bn+0x632>
movl   $0x1,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
call   1080 <BN_free@plt>
mov    -0xc(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_hex2bn>:
push   %rbx
sub    $0x10,%rsp
movq   $0x0,0x8(%rsp)
lea    0xf44(%rip),%rsi
lea    0x8(%rsp),%rdi
call   10d0 <parseBN@plt>
lea    0xe0a(%rip),%rdi
lea    0xead(%rip),%rdx
lea    0xeb8(%rip),%rcx
mov    $0x6eb,%esi
mov    %eax,%r8d
mov    $0x1,%r9d
call   1070 <test_int_eq@plt>
xor    %ebx,%ebx
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xdd3(%rip),%rdi
lea    0xe8a(%rip),%rdx
mov    $0x6ec,%esi
call   1050 <test_BN_eq_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xdae(%rip),%rdi
lea    0xe65(%rip),%rdx
mov    $0x6ed,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xd89(%rip),%rdi
lea    0xe40(%rip),%rdx
mov    $0x6ee,%esi
call   10e0 <test_BN_even@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,0x8(%rsp)
lea    0xe2f(%rip),%rsi
lea    0x8(%rsp),%rdi
call   10d0 <parseBN@plt>
lea    0xd45(%rip),%rdi
lea    0xdff(%rip),%rdx
lea    0xe0c(%rip),%rcx
mov    $0x6f3,%esi
mov    %eax,%r8d
mov    $0x3,%r9d
call   1070 <test_int_eq@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%r8
lea    0xd10(%rip),%rdi
lea    0xdc7(%rip),%rdx
lea    0xdd9(%rip),%rcx
mov    $0x6f4,%esi
mov    $0x256,%r9d
call   1090 <test_BN_eq_word@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xcde(%rip),%rdi
lea    0xd95(%rip),%rdx
mov    $0x6f5,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xcb9(%rip),%rdi
lea    0xd70(%rip),%rdx
mov    $0x6f6,%esi
call   10b0 <test_BN_gt_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xc94(%rip),%rdi
lea    0xd4b(%rip),%rdx
mov    $0x6f7,%esi
call   1060 <test_BN_ne_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xc6f(%rip),%rdi
lea    0xd26(%rip),%rdx
mov    $0x6f8,%esi
call   10e0 <test_BN_even@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,0x8(%rsp)
lea    0xd2d(%rip),%rsi
lea    0x8(%rsp),%rdi
call   10d0 <parseBN@plt>
lea    0xc2b(%rip),%rdi
lea    0xd01(%rip),%rdx
lea    0xcf2(%rip),%rcx
mov    $0x6fd,%esi
mov    %eax,%r8d
mov    $0x3,%r9d
call   1070 <test_int_eq@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%r8
lea    0xbf6(%rip),%rdi
lea    0xcad(%rip),%rdx
lea    0xcdd(%rip),%rcx
mov    $0x6fe,%esi
mov    $0x42,%r9d
call   1040 <test_BN_abs_eq_word@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xbc4(%rip),%rdi
lea    0xc7b(%rip),%rdx
mov    $0x6ff,%esi
call   10f0 <test_BN_lt_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xb9f(%rip),%rdi
lea    0xc56(%rip),%rdx
mov    $0x700,%esi
call   10c0 <test_BN_le_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xb7a(%rip),%rdi
lea    0xc31(%rip),%rdx
mov    $0x701,%esi
call   1060 <test_BN_ne_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xb55(%rip),%rdi
lea    0xc0c(%rip),%rdx
mov    $0x702,%esi
call   10e0 <test_BN_even@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,0x8(%rsp)
lea    0xc2f(%rip),%rsi
lea    0x8(%rsp),%rdi
call   10d0 <parseBN@plt>
lea    0xb11(%rip),%rdi
lea    0xc04(%rip),%rdx
lea    0xbf6(%rip),%rcx
mov    $0x707,%esi
mov    %eax,%r8d
mov    $0x2,%r9d
call   1070 <test_int_eq@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%r8
lea    0xadc(%rip),%rdi
lea    0xb93(%rip),%rdx
lea    0xbde(%rip),%rcx
mov    $0x708,%esi
mov    $0xcb,%r9d
call   1090 <test_BN_eq_word@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xaaa(%rip),%rdi
lea    0xb61(%rip),%rdx
mov    $0x709,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xa85(%rip),%rdi
lea    0xb3c(%rip),%rdx
mov    $0x70a,%esi
call   10b0 <test_BN_gt_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xa60(%rip),%rdi
lea    0xb17(%rip),%rdx
mov    $0x70b,%esi
call   1060 <test_BN_ne_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0xa3b(%rip),%rdi
lea    0xaf2(%rip),%rdx
mov    $0x70c,%esi
call   10a0 <test_BN_odd@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,0x8(%rsp)
lea    0xb30(%rip),%rsi
lea    0x8(%rsp),%rdi
call   10d0 <parseBN@plt>
lea    0x9f7(%rip),%rdi
lea    0xb05(%rip),%rdx
lea    0xadc(%rip),%rcx
mov    $0x711,%esi
mov    %eax,%r8d
mov    $0x2,%r9d
call   1070 <test_int_eq@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0x9c2(%rip),%rdi
lea    0xa79(%rip),%rdx
mov    $0x712,%esi
call   1050 <test_BN_eq_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0x99d(%rip),%rdi
lea    0xa54(%rip),%rdx
mov    $0x713,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0x978(%rip),%rdi
lea    0xa2f(%rip),%rdx
mov    $0x714,%esi
call   10c0 <test_BN_le_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0x953(%rip),%rdi
lea    0xa0a(%rip),%rdx
mov    $0x715,%esi
call   10e0 <test_BN_even@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rdi
call   1080 <BN_free@plt>
movq   $0x0,0x8(%rsp)
lea    0xa7a(%rip),%rsi
lea    0x8(%rsp),%rdi
call   10d0 <parseBN@plt>
lea    0x90f(%rip),%rdi
lea    0xa33(%rip),%rdx
lea    0x9d6(%rip),%rcx
mov    $0x71a,%esi
mov    %eax,%r8d
mov    $0x3,%r9d
call   1070 <test_int_eq@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%r8
lea    0x8da(%rip),%rdi
lea    0x991(%rip),%rdx
lea    0xa45(%rip),%rcx
mov    $0x71b,%esi
mov    $0xabc,%r9d
call   1090 <test_BN_eq_word@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0x8a8(%rip),%rdi
lea    0x95f(%rip),%rdx
mov    $0x71c,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0x887(%rip),%rdi
lea    0x93e(%rip),%rdx
mov    $0x71d,%esi
call   10b0 <test_BN_gt_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0x866(%rip),%rdi
lea    0x91d(%rip),%rdx
mov    $0x71e,%esi
call   1060 <test_BN_ne_zero@plt>
test   %eax,%eax
je     17d3 <test_hex2bn+0x603>
mov    0x8(%rsp),%rcx
lea    0x845(%rip),%rdi
lea    0x8fc(%rip),%rdx
mov    $0x71f,%esi
call   10e0 <test_BN_even@plt>
xor    %ebx,%ebx
test   %eax,%eax
setne  %bl
mov    0x8(%rsp),%rdi
call   1080 <BN_free@plt>
mov    %ebx,%eax
add    $0x10,%rsp
pop    %rbx
ret

LLVM IR (-O0):
@.str = [170 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/bntest.c\00"
@.str.1 = [18 x i8] c"parseBN(&bn, \220\22)\00"
@.str.2 = [2 x i8] c"1\00"
@.str.3 = [2 x i8] c"0\00"
@.str.4 = [3 x i8] c"bn\00"
@.str.5 = [20 x i8] c"parseBN(&bn, \22256\22)\00"
@.str.6 = [2 x i8] c"3\00"
@.str.7 = [4 x i8] c"256\00"
@.str.8 = [6 x i8] c"0x256\00"
@.str.9 = [20 x i8] c"parseBN(&bn, \22-42\22)\00"
@.str.10 = [4 x i8] c"-42\00"
@.str.11 = [5 x i8] c"0x42\00"
@.str.12 = [19 x i8] c"parseBN(&bn, \22cb\22)\00"
@.str.13 = [2 x i8] c"2\00"
@.str.14 = [3 x i8] c"cb\00"
@.str.15 = [5 x i8] c"0xCB\00"
@.str.16 = [19 x i8] c"parseBN(&bn, \22-0\22)\00"
@.str.17 = [3 x i8] c"-0\00"
@.str.18 = [47 x i8] c"parseBN(&bn, \22abctrailing garbage is ignored\22)\00"
@.str.19 = [31 x i8] c"abctrailing garbage is ignored\00"
@.str.20 = [6 x i8] c"0xabc\00"
define i32 @test_hex2bn() {
%1 = alloca i32*
%2 = alloca i32
store i32* null, i32** %1
store i32 0, i32* %2
%3 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%4 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1771, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 %3, i32 1)
%5 = icmp ne i32 %4, 0
br i1 %5, label %6, label %18
6: ; preds = %0
%7 = load i32*, i32** %1
%8 = call i32 @test_BN_eq_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1772, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %7)
%9 = icmp ne i32 %8, 0
br i1 %9, label %10, label %18
10: ; preds = %6
%11 = load i32*, i32** %1
%12 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1773, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %11)
%13 = icmp ne i32 %12, 0
br i1 %13, label %14, label %18
14: ; preds = %10
%15 = load i32*, i32** %1
%16 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1774, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %15)
%17 = icmp ne i32 %16, 0
br i1 %17, label %19, label %18
18: ; preds = %14, %10, %6, %0
br label %151
19: ; preds = %14
%20 = load i32*, i32** %1
%21 = call i32 @BN_free(i32* %20)
store i32* null, i32** %1
%22 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
%23 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1779, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0), i32 %22, i32 3)
%24 = icmp ne i32 %23, 0
br i1 %24, label %25, label %45
25: ; preds = %19
%26 = load i32*, i32** %1
%27 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1780, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32* %26, i32 598)
%28 = icmp ne i32 %27, 0
br i1 %28, label %29, label %45
29: ; preds = %25
%30 = load i32*, i32** %1
%31 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1781, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %30)
%32 = icmp ne i32 %31, 0
br i1 %32, label %33, label %45
33: ; preds = %29
%34 = load i32*, i32** %1
%35 = call i32 @test_BN_gt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1782, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %34)
%36 = icmp ne i32 %35, 0
br i1 %36, label %37, label %45
37: ; preds = %33
%38 = load i32*, i32** %1
%39 = call i32 @test_BN_ne_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1783, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %38)
%40 = icmp ne i32 %39, 0
br i1 %40, label %41, label %45
41: ; preds = %37
%42 = load i32*, i32** %1
%43 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1784, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %42)
%44 = icmp ne i32 %43, 0
br i1 %44, label %46, label %45
45: ; preds = %41, %37, %33, %29, %25, %19
br label %151
46: ; preds = %41
%47 = load i32*, i32** %1
%48 = call i32 @BN_free(i32* %47)
store i32* null, i32** %1
%49 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%50 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1789, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0), i32 %49, i32 3)
%51 = icmp ne i32 %50, 0
br i1 %51, label %52, label %72
52: ; preds = %46
%53 = load i32*, i32** %1
%54 = call i32 @test_BN_abs_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1790, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i32* %53, i32 66)
%55 = icmp ne i32 %54, 0
br i1 %55, label %56, label %72
56: ; preds = %52
%57 = load i32*, i32** %1
%58 = call i32 @test_BN_lt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1791, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %57)
%59 = icmp ne i32 %58, 0
br i1 %59, label %60, label %72
60: ; preds = %56
%61 = load i32*, i32** %1
%62 = call i32 @test_BN_le_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1792, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %61)
%63 = icmp ne i32 %62, 0
br i1 %63, label %64, label %72
64: ; preds = %60
%65 = load i32*, i32** %1
%66 = call i32 @test_BN_ne_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1793, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %65)
%67 = icmp ne i32 %66, 0
br i1 %67, label %68, label %72
68: ; preds = %64
%69 = load i32*, i32** %1
%70 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1794, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %69)
%71 = icmp ne i32 %70, 0
br i1 %71, label %73, label %72
72: ; preds = %68, %64, %60, %56, %52, %46
br label %151
73: ; preds = %68
%74 = load i32*, i32** %1
%75 = call i32 @BN_free(i32* %74)
store i32* null, i32** %1
%76 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%77 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1799, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0), i32 %76, i32 2)
%78 = icmp ne i32 %77, 0
br i1 %78, label %79, label %99
79: ; preds = %73
%80 = load i32*, i32** %1
%81 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1800, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), i32* %80, i32 203)
%82 = icmp ne i32 %81, 0
br i1 %82, label %83, label %99
83: ; preds = %79
%84 = load i32*, i32** %1
%85 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1801, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %84)
%86 = icmp ne i32 %85, 0
br i1 %86, label %87, label %99
87: ; preds = %83
%88 = load i32*, i32** %1
%89 = call i32 @test_BN_gt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1802, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %88)
%90 = icmp ne i32 %89, 0
br i1 %90, label %91, label %99
91: ; preds = %87
%92 = load i32*, i32** %1
%93 = call i32 @test_BN_ne_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1803, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %92)
%94 = icmp ne i32 %93, 0
br i1 %94, label %95, label %99
95: ; preds = %91
%96 = load i32*, i32** %1
%97 = call i32 @test_BN_odd(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1804, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %96)
%98 = icmp ne i32 %97, 0
br i1 %98, label %100, label %99
99: ; preds = %95, %91, %87, %83, %79, %73
br label %151
100: ; preds = %95
%101 = load i32*, i32** %1
%102 = call i32 @BN_free(i32* %101)
store i32* null, i32** %1
%103 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
%104 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1809, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0), i32 %103, i32 2)
%105 = icmp ne i32 %104, 0
br i1 %105, label %106, label %122
106: ; preds = %100
%107 = load i32*, i32** %1
%108 = call i32 @test_BN_eq_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1810, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %107)
%109 = icmp ne i32 %108, 0
br i1 %109, label %110, label %122
110: ; preds = %106
%111 = load i32*, i32** %1
%112 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1811, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %111)
%113 = icmp ne i32 %112, 0
br i1 %113, label %114, label %122
114: ; preds = %110
%115 = load i32*, i32** %1
%116 = call i32 @test_BN_le_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1812, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %115)
%117 = icmp ne i32 %116, 0
br i1 %117, label %118, label %122
118: ; preds = %114
%119 = load i32*, i32** %1
%120 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1813, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %119)
%121 = icmp ne i32 %120, 0
br i1 %121, label %123, label %122
122: ; preds = %118, %114, %110, %106, %100
br label %151
123: ; preds = %118
%124 = load i32*, i32** %1
%125 = call i32 @BN_free(i32* %124)
store i32* null, i32** %1
%126 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.19, i64 0, i64 0))
%127 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1818, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0), i32 %126, i32 3)
%128 = icmp ne i32 %127, 0
br i1 %128, label %129, label %149
129: ; preds = %123
%130 = load i32*, i32** %1
%131 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1819, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0), i32* %130, i32 2748)
%132 = icmp ne i32 %131, 0
br i1 %132, label %133, label %149
133: ; preds = %129
%134 = load i32*, i32** %1
%135 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1820, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %134)
%136 = icmp ne i32 %135, 0
br i1 %136, label %137, label %149
137: ; preds = %133
%138 = load i32*, i32** %1
%139 = call i32 @test_BN_gt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1821, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %138)
%140 = icmp ne i32 %139, 0
br i1 %140, label %141, label %149
141: ; preds = %137
%142 = load i32*, i32** %1
%143 = call i32 @test_BN_ne_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1822, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %142)
%144 = icmp ne i32 %143, 0
br i1 %144, label %145, label %149
145: ; preds = %141
%146 = load i32*, i32** %1
%147 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1823, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %146)
%148 = icmp ne i32 %147, 0
br i1 %148, label %150, label %149
149: ; preds = %145, %141, %137, %133, %129, %123
br label %151
150: ; preds = %145
store i32 1, i32* %2
br label %151
151: ; preds = %150, %149, %122, %99, %72, %45, %18
%152 = load i32*, i32** %1
%153 = call i32 @BN_free(i32* %152)
%154 = load i32, i32* %2
ret i32 %154
}

LLVM IR (-O2):
@.str = [170 x i8] c"/scratch/repos/new/home/jordi_armengol_estape/c-scraper/outputs/2022-01-22/02-19-57/repos/papyrussolution/OpenPapyrus/refs/heads/master/Src/OSF/OpenSSL-111/test/bntest.c\00"
@.str.1 = [18 x i8] c"parseBN(&bn, \220\22)\00"
@.str.2 = [2 x i8] c"1\00"
@.str.3 = [2 x i8] c"0\00"
@.str.4 = [3 x i8] c"bn\00"
@.str.5 = [20 x i8] c"parseBN(&bn, \22256\22)\00"
@.str.6 = [2 x i8] c"3\00"
@.str.7 = [4 x i8] c"256\00"
@.str.8 = [6 x i8] c"0x256\00"
@.str.9 = [20 x i8] c"parseBN(&bn, \22-42\22)\00"
@.str.10 = [4 x i8] c"-42\00"
@.str.11 = [5 x i8] c"0x42\00"
@.str.12 = [19 x i8] c"parseBN(&bn, \22cb\22)\00"
@.str.13 = [2 x i8] c"2\00"
@.str.14 = [3 x i8] c"cb\00"
@.str.15 = [5 x i8] c"0xCB\00"
@.str.16 = [19 x i8] c"parseBN(&bn, \22-0\22)\00"
@.str.17 = [3 x i8] c"-0\00"
@.str.18 = [47 x i8] c"parseBN(&bn, \22abctrailing garbage is ignored\22)\00"
@.str.19 = [31 x i8] c"abctrailing garbage is ignored\00"
@.str.20 = [6 x i8] c"0xabc\00"
define i32 @test_hex2bn() {
%1 = alloca i32*
%2 = bitcast i32** %1 to i8*
store i32* null, i32** %1
%3 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%4 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1771, i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0), i32 %3, i32 1)
%5 = icmp eq i32 %4, 0
br i1 %5, label %145, label %6
6: ; preds = %0
%7 = load i32*, i32** %1
%8 = call i32 @test_BN_eq_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1772, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %7)
%9 = icmp eq i32 %8, 0
br i1 %9, label %145, label %10
10: ; preds = %6
%11 = load i32*, i32** %1
%12 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1773, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %11)
%13 = icmp eq i32 %12, 0
br i1 %13, label %145, label %14
14: ; preds = %10
%15 = load i32*, i32** %1
%16 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1774, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %15)
%17 = icmp eq i32 %16, 0
br i1 %17, label %145, label %18
18: ; preds = %14
%19 = load i32*, i32** %1
%20 = call i32 @BN_free(i32* %19)
store i32* null, i32** %1
%21 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
%22 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1779, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.5, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0), i32 %21, i32 3)
%23 = icmp eq i32 %22, 0
br i1 %23, label %145, label %24
24: ; preds = %18
%25 = load i32*, i32** %1
%26 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1780, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.8, i64 0, i64 0), i32* %25, i32 598)
%27 = icmp eq i32 %26, 0
br i1 %27, label %145, label %28
28: ; preds = %24
%29 = load i32*, i32** %1
%30 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1781, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %29)
%31 = icmp eq i32 %30, 0
br i1 %31, label %145, label %32
32: ; preds = %28
%33 = load i32*, i32** %1
%34 = call i32 @test_BN_gt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1782, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %33)
%35 = icmp eq i32 %34, 0
br i1 %35, label %145, label %36
36: ; preds = %32
%37 = load i32*, i32** %1
%38 = call i32 @test_BN_ne_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1783, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %37)
%39 = icmp eq i32 %38, 0
br i1 %39, label %145, label %40
40: ; preds = %36
%41 = load i32*, i32** %1
%42 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1784, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %41)
%43 = icmp eq i32 %42, 0
br i1 %43, label %145, label %44
44: ; preds = %40
%45 = load i32*, i32** %1
%46 = call i32 @BN_free(i32* %45)
store i32* null, i32** %1
%47 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%48 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1789, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.9, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0), i32 %47, i32 3)
%49 = icmp eq i32 %48, 0
br i1 %49, label %145, label %50
50: ; preds = %44
%51 = load i32*, i32** %1
%52 = call i32 @test_BN_abs_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1790, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.11, i64 0, i64 0), i32* %51, i32 66)
%53 = icmp eq i32 %52, 0
br i1 %53, label %145, label %54
54: ; preds = %50
%55 = load i32*, i32** %1
%56 = call i32 @test_BN_lt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1791, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %55)
%57 = icmp eq i32 %56, 0
br i1 %57, label %145, label %58
58: ; preds = %54
%59 = load i32*, i32** %1
%60 = call i32 @test_BN_le_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1792, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %59)
%61 = icmp eq i32 %60, 0
br i1 %61, label %145, label %62
62: ; preds = %58
%63 = load i32*, i32** %1
%64 = call i32 @test_BN_ne_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1793, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %63)
%65 = icmp eq i32 %64, 0
br i1 %65, label %145, label %66
66: ; preds = %62
%67 = load i32*, i32** %1
%68 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1794, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %67)
%69 = icmp eq i32 %68, 0
br i1 %69, label %145, label %70
70: ; preds = %66
%71 = load i32*, i32** %1
%72 = call i32 @BN_free(i32* %71)
store i32* null, i32** %1
%73 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.14, i64 0, i64 0))
%74 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1799, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.12, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0), i32 %73, i32 2)
%75 = icmp eq i32 %74, 0
br i1 %75, label %145, label %76
76: ; preds = %70
%77 = load i32*, i32** %1
%78 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1800, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.15, i64 0, i64 0), i32* %77, i32 203)
%79 = icmp eq i32 %78, 0
br i1 %79, label %145, label %80
80: ; preds = %76
%81 = load i32*, i32** %1
%82 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1801, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %81)
%83 = icmp eq i32 %82, 0
br i1 %83, label %145, label %84
84: ; preds = %80
%85 = load i32*, i32** %1
%86 = call i32 @test_BN_gt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1802, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %85)
%87 = icmp eq i32 %86, 0
br i1 %87, label %145, label %88
88: ; preds = %84
%89 = load i32*, i32** %1
%90 = call i32 @test_BN_ne_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1803, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %89)
%91 = icmp eq i32 %90, 0
br i1 %91, label %145, label %92
92: ; preds = %88
%93 = load i32*, i32** %1
%94 = call i32 @test_BN_odd(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1804, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %93)
%95 = icmp eq i32 %94, 0
br i1 %95, label %145, label %96
96: ; preds = %92
%97 = load i32*, i32** %1
%98 = call i32 @BN_free(i32* %97)
store i32* null, i32** %1
%99 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0))
%100 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1809, i8* getelementptr inbounds ([19 x i8], [19 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0), i32 %99, i32 2)
%101 = icmp eq i32 %100, 0
br i1 %101, label %145, label %102
102: ; preds = %96
%103 = load i32*, i32** %1
%104 = call i32 @test_BN_eq_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1810, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %103)
%105 = icmp eq i32 %104, 0
br i1 %105, label %145, label %106
106: ; preds = %102
%107 = load i32*, i32** %1
%108 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1811, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %107)
%109 = icmp eq i32 %108, 0
br i1 %109, label %145, label %110
110: ; preds = %106
%111 = load i32*, i32** %1
%112 = call i32 @test_BN_le_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1812, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %111)
%113 = icmp eq i32 %112, 0
br i1 %113, label %145, label %114
114: ; preds = %110
%115 = load i32*, i32** %1
%116 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1813, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %115)
%117 = icmp eq i32 %116, 0
br i1 %117, label %145, label %118
118: ; preds = %114
%119 = load i32*, i32** %1
%120 = call i32 @BN_free(i32* %119)
store i32* null, i32** %1
%121 = call i32 @parseBN(i32** %1, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.19, i64 0, i64 0))
%122 = call i32 @test_int_eq(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1818, i8* getelementptr inbounds ([47 x i8], [47 x i8]* @.str.18, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0), i32 %121, i32 3)
%123 = icmp eq i32 %122, 0
br i1 %123, label %145, label %124
124: ; preds = %118
%125 = load i32*, i32** %1
%126 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1819, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0), i32* %125, i32 2748)
%127 = icmp eq i32 %126, 0
br i1 %127, label %145, label %128
128: ; preds = %124
%129 = load i32*, i32** %1
%130 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1820, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %129)
%131 = icmp eq i32 %130, 0
br i1 %131, label %145, label %132
132: ; preds = %128
%133 = load i32*, i32** %1
%134 = call i32 @test_BN_gt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1821, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %133)
%135 = icmp eq i32 %134, 0
br i1 %135, label %145, label %136
136: ; preds = %132
%137 = load i32*, i32** %1
%138 = call i32 @test_BN_ne_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1822, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %137)
%139 = icmp eq i32 %138, 0
br i1 %139, label %145, label %140
140: ; preds = %136
%141 = load i32*, i32** %1
%142 = call i32 @test_BN_even(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1823, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %141)
%143 = icmp ne i32 %142, 0
%144 = zext i1 %143 to i32
br label %145
145: ; preds = %140, %118, %124, %128, %132, %136, %96, %102, %106, %110, %114, %70, %76, %80, %84, %88, %92, %44, %50, %54, %58, %62, %66, %18, %24, %28, %32, %36, %40, %0, %6, %10, %14
%146 = phi i32 [ 0, %136 ], [ 0, %132 ], [ 0, %128 ], [ 0, %124 ], [ 0, %118 ], [ 0, %114 ], [ 0, %110 ], [ 0, %106 ], [ 0, %102 ], [ 0, %96 ], [ 0, %92 ], [ 0, %88 ], [ 0, %84 ], [ 0, %80 ], [ 0, %76 ], [ 0, %70 ], [ 0, %66 ], [ 0, %62 ], [ 0, %58 ], [ 0, %54 ], [ 0, %50 ], [ 0, %44 ], [ 0, %40 ], [ 0, %36 ], [ 0, %32 ], [ 0, %28 ], [ 0, %24 ], [ 0, %18 ], [ 0, %14 ], [ 0, %10 ], [ 0, %6 ], [ 0, %0 ], [ %144, %140 ]
%147 = load i32*, i32** %1
%148 = call i32 @BN_free(i32* %147)
ret i32 %146
}