#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 */
scalar_t__ BN_asc2bn(int /*<<< orphan*/ **, char *);
int /*<<< orphan*/ BN_free(int /*<<< orphan*/ *);
int /*<<< orphan*/ *BN_new();
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_ge_zero(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_BN_lt_zero(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_ptr(char *, int, char *, int /*<<< orphan*/ *);
int /*<<< orphan*/ test_true(char *, int, char *, int);
int test_asc2bn(void) {
  BIGNUM *bn = NULL;
  int st = 0;
  if (!test_ptr("/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",
                1837, "bn = BN_new()", bn = BN_new()))
    goto err;
  if (!test_true(
          "/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",
          1840, "BN_asc2bn(&bn, \"0\")", (BN_asc2bn(&bn, "0")) != 0) ||
      !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",
          1841, "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",
          1842, "bn", bn))
    goto err;
  if (!test_true(
          "/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",
          1845, "BN_asc2bn(&bn, \"256\")", (BN_asc2bn(&bn, "256")) != 0) ||
      !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",
          1846, "bn", "256", bn, 256) ||
      !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",
          1847, "bn", bn))
    goto err;
  if (!test_true(
          "/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",
          1850, "BN_asc2bn(&bn, \"-42\")", (BN_asc2bn(&bn, "-42")) != 0) ||
      !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",
          1851, "bn", "42", bn, 42) ||
      !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",
          1852, "bn", bn))
    goto err;
  if (!test_true(
          "/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",
          1855, "BN_asc2bn(&bn, \"0x1234\")",
          (BN_asc2bn(&bn, "0x1234")) != 0) ||
      !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",
          1856, "bn", "0x1234", bn, 0x1234) ||
      !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",
          1857, "bn", bn))
    goto err;
  if (!test_true(
          "/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",
          1860, "BN_asc2bn(&bn, \"0X1234\")",
          (BN_asc2bn(&bn, "0X1234")) != 0) ||
      !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",
          1861, "bn", "0x1234", bn, 0x1234) ||
      !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",
          1862, "bn", bn))
    goto err;
  if (!test_true(
          "/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",
          1865, "BN_asc2bn(&bn, \"-0xabcd\")",
          (BN_asc2bn(&bn, "-0xabcd")) != 0) ||
      !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",
          1866, "bn", "0xabcd", bn, 0xabcd) ||
      !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",
          1867, "bn", bn))
    goto err;
  if (!test_true(
          "/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",
          1870, "BN_asc2bn(&bn, \"-0\")", (BN_asc2bn(&bn, "-0")) != 0) ||
      !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",
          1871, "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",
          1872, "bn", bn))
    goto err;
  if (!test_true(
          "/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",
          1875, "BN_asc2bn(&bn, \"123trailing garbage is ignored\")",
          (BN_asc2bn(&bn, "123trailing garbage is ignored")) != 0) ||
      !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",
          1876, "bn", "123", bn, 123) ||
      !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",
          1877, "bn", bn))
    goto err;
  st = 1;
err:
  BN_free(bn);
  return st;
}


x86 assembly (clang, -O0):
<test_asc2bn>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movq   $0x0,-0x8(%rbp)
movl   $0x0,-0xc(%rbp)
mov    $0x0,%al
call   1060 <BN_new@plt>
mov    %rax,%rcx
mov    %rcx,-0x8(%rbp)
lea    0xe34(%rip),%rdi
mov    $0x72d,%esi
lea    0xed2(%rip),%rdx
call   1080 <test_ptr@plt>
cmp    $0x0,%eax
jne    11eb <test_asc2bn+0x4b>
jmp    16a0 <test_asc2bn+0x500>
lea    -0x8(%rbp),%rdi
lea    0xf85(%rip),%rsi
call   1090 <BN_asc2bn@plt>
cmp    $0x0,%rax
setne  %al
and    $0x1,%al
movzbl %al,%ecx
lea    0xdf2(%rip),%rdi
mov    $0x730,%esi
lea    0xe9e(%rip),%rdx
call   1040 <test_true@plt>
cmp    $0x0,%eax
je     1272 <test_asc2bn+0xd2>
mov    -0x8(%rbp),%rcx
lea    0xdcd(%rip),%rdi
mov    $0x731,%esi
lea    0xe8d(%rip),%rdx
call   1070 <test_BN_eq_zero@plt>
cmp    $0x0,%eax
je     1272 <test_asc2bn+0xd2>
mov    -0x8(%rbp),%rcx
lea    0xda8(%rip),%rdi
mov    $0x732,%esi
lea    0xe68(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
jne    1277 <test_asc2bn+0xd7>
jmp    16a0 <test_asc2bn+0x500>
lea    -0x8(%rbp),%rdi
lea    0xe63(%rip),%rsi
call   1090 <BN_asc2bn@plt>
cmp    $0x0,%rax
setne  %al
and    $0x1,%al
movzbl %al,%ecx
lea    0xd66(%rip),%rdi
mov    $0x735,%esi
lea    0xe29(%rip),%rdx
call   1040 <test_true@plt>
cmp    $0x0,%eax
je     130b <test_asc2bn+0x16b>
mov    -0x8(%rbp),%r8
lea    0xd41(%rip),%rdi
mov    $0x736,%esi
lea    0xe01(%rip),%rdx
lea    0xe13(%rip),%rcx
mov    $0x100,%r9d
call   10b0 <test_BN_eq_word@plt>
cmp    $0x0,%eax
je     130b <test_asc2bn+0x16b>
mov    -0x8(%rbp),%rcx
lea    0xd0f(%rip),%rdi
mov    $0x737,%esi
lea    0xdcf(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
jne    1310 <test_asc2bn+0x170>
jmp    16a0 <test_asc2bn+0x500>
lea    -0x8(%rbp),%rdi
lea    0xde4(%rip),%rsi
call   1090 <BN_asc2bn@plt>
cmp    $0x0,%rax
setne  %al
and    $0x1,%al
movzbl %al,%ecx
lea    0xccd(%rip),%rdi
mov    $0x73a,%esi
lea    0xdaa(%rip),%rdx
call   1040 <test_true@plt>
cmp    $0x0,%eax
je     13a4 <test_asc2bn+0x204>
mov    -0x8(%rbp),%r8
lea    0xca8(%rip),%rdi
mov    $0x73b,%esi
lea    0xd68(%rip),%rdx
lea    0xd95(%rip),%rcx
mov    $0x2a,%r9d
call   1050 <test_BN_abs_eq_word@plt>
cmp    $0x0,%eax
je     13a4 <test_asc2bn+0x204>
mov    -0x8(%rbp),%rcx
lea    0xc76(%rip),%rdi
mov    $0x73c,%esi
lea    0xd36(%rip),%rdx
call   10c0 <test_BN_lt_zero@plt>
cmp    $0x0,%eax
jne    13a9 <test_asc2bn+0x209>
jmp    16a0 <test_asc2bn+0x500>
lea    -0x8(%rbp),%rdi
lea    0xd68(%rip),%rsi
call   1090 <BN_asc2bn@plt>
cmp    $0x0,%rax
setne  %al
and    $0x1,%al
movzbl %al,%ecx
lea    0xc34(%rip),%rdi
mov    $0x73f,%esi
lea    0xd2b(%rip),%rdx
call   1040 <test_true@plt>
cmp    $0x0,%eax
je     143d <test_asc2bn+0x29d>
mov    -0x8(%rbp),%r8
lea    0xc0f(%rip),%rdi
mov    $0x740,%esi
lea    0xccf(%rip),%rdx
lea    0xd18(%rip),%rcx
mov    $0x1234,%r9d
call   10b0 <test_BN_eq_word@plt>
cmp    $0x0,%eax
je     143d <test_asc2bn+0x29d>
mov    -0x8(%rbp),%rcx
lea    0xbdd(%rip),%rdi
mov    $0x741,%esi
lea    0xc9d(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
jne    1442 <test_asc2bn+0x2a2>
jmp    16a0 <test_asc2bn+0x500>
lea    -0x8(%rbp),%rdi
lea    0xcef(%rip),%rsi
call   1090 <BN_asc2bn@plt>
cmp    $0x0,%rax
setne  %al
and    $0x1,%al
movzbl %al,%ecx
lea    0xb9b(%rip),%rdi
mov    $0x744,%esi
lea    0xcb2(%rip),%rdx
call   1040 <test_true@plt>
cmp    $0x0,%eax
je     14d6 <test_asc2bn+0x336>
mov    -0x8(%rbp),%r8
lea    0xb76(%rip),%rdi
mov    $0x745,%esi
lea    0xc36(%rip),%rdx
lea    0xc7f(%rip),%rcx
mov    $0x1234,%r9d
call   10b0 <test_BN_eq_word@plt>
cmp    $0x0,%eax
je     14d6 <test_asc2bn+0x336>
mov    -0x8(%rbp),%rcx
lea    0xb44(%rip),%rdi
mov    $0x746,%esi
lea    0xc04(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
jne    14db <test_asc2bn+0x33b>
jmp    16a0 <test_asc2bn+0x500>
lea    -0x8(%rbp),%rdi
lea    0xc77(%rip),%rsi
call   1090 <BN_asc2bn@plt>
cmp    $0x0,%rax
setne  %al
and    $0x1,%al
movzbl %al,%ecx
lea    0xb02(%rip),%rdi
mov    $0x749,%esi
lea    0xc39(%rip),%rdx
call   1040 <test_true@plt>
cmp    $0x0,%eax
je     156f <test_asc2bn+0x3cf>
mov    -0x8(%rbp),%r8
lea    0xadd(%rip),%rdi
mov    $0x74a,%esi
lea    0xb9d(%rip),%rdx
lea    0xc28(%rip),%rcx
mov    $0xabcd,%r9d
call   1050 <test_BN_abs_eq_word@plt>
cmp    $0x0,%eax
je     156f <test_asc2bn+0x3cf>
mov    -0x8(%rbp),%rcx
lea    0xaab(%rip),%rdi
mov    $0x74b,%esi
lea    0xb6b(%rip),%rdx
call   10c0 <test_BN_lt_zero@plt>
cmp    $0x0,%eax
jne    1574 <test_asc2bn+0x3d4>
jmp    16a0 <test_asc2bn+0x500>
lea    -0x8(%rbp),%rdi
lea    0xbfb(%rip),%rsi
call   1090 <BN_asc2bn@plt>
cmp    $0x0,%rax
setne  %al
and    $0x1,%al
movzbl %al,%ecx
lea    0xa69(%rip),%rdi
mov    $0x74e,%esi
lea    0xbc2(%rip),%rdx
call   1040 <test_true@plt>
cmp    $0x0,%eax
je     15fb <test_asc2bn+0x45b>
mov    -0x8(%rbp),%rcx
lea    0xa44(%rip),%rdi
mov    $0x74f,%esi
lea    0xb04(%rip),%rdx
call   1070 <test_BN_eq_zero@plt>
cmp    $0x0,%eax
je     15fb <test_asc2bn+0x45b>
mov    -0x8(%rbp),%rcx
lea    0xa1f(%rip),%rdi
mov    $0x750,%esi
lea    0xadf(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
jne    1600 <test_asc2bn+0x460>
jmp    16a0 <test_asc2bn+0x500>
lea    -0x8(%rbp),%rdi
lea    0xba3(%rip),%rsi
call   1090 <BN_asc2bn@plt>
cmp    $0x0,%rax
setne  %al
and    $0x1,%al
movzbl %al,%ecx
lea    0x9dd(%rip),%rdi
mov    $0x753,%esi
lea    0xb4e(%rip),%rdx
call   1040 <test_true@plt>
cmp    $0x0,%eax
je     1694 <test_asc2bn+0x4f4>
mov    -0x8(%rbp),%r8
lea    0x9b8(%rip),%rdi
mov    $0x754,%esi
lea    0xa78(%rip),%rdx
lea    0xb72(%rip),%rcx
mov    $0x7b,%r9d
call   10b0 <test_BN_eq_word@plt>
cmp    $0x0,%eax
je     1694 <test_asc2bn+0x4f4>
mov    -0x8(%rbp),%rcx
lea    0x986(%rip),%rdi
mov    $0x755,%esi
lea    0xa46(%rip),%rdx
call   1030 <test_BN_ge_zero@plt>
cmp    $0x0,%eax
jne    1699 <test_asc2bn+0x4f9>
jmp    16a0 <test_asc2bn+0x500>
movl   $0x1,-0xc(%rbp)
mov    -0x8(%rbp),%rdi
call   10a0 <BN_free@plt>
mov    -0xc(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test_asc2bn>:
push   %rbx
sub    $0x10,%rsp
xor    %ebx,%ebx
xor    %eax,%eax
call   1060 <BN_new@plt>
mov    %rax,0x8(%rsp)
lea    0xe46(%rip),%rdi
lea    0xee9(%rip),%rdx
mov    $0x72d,%esi
mov    %rax,%rcx
call   1080 <test_ptr@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
lea    0xf9e(%rip),%rsi
lea    0x8(%rsp),%rdi
call   1090 <BN_asc2bn@plt>
xor    %ecx,%ecx
test   %rax,%rax
setne  %cl
lea    0xe0a(%rip),%rdi
lea    0xebb(%rip),%rdx
mov    $0x730,%esi
call   1040 <test_true@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0xde5(%rip),%rdi
lea    0xeaa(%rip),%rdx
mov    $0x731,%esi
call   1070 <test_BN_eq_zero@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0xdc0(%rip),%rdi
lea    0xe85(%rip),%rdx
mov    $0x732,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
lea    0xe85(%rip),%rsi
lea    0x8(%rsp),%rdi
call   1090 <BN_asc2bn@plt>
xor    %ecx,%ecx
test   %rax,%rax
setne  %cl
lea    0xd87(%rip),%rdi
lea    0xe4f(%rip),%rdx
mov    $0x735,%esi
call   1040 <test_true@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%r8
lea    0xd62(%rip),%rdi
lea    0xe27(%rip),%rdx
lea    0xe39(%rip),%rcx
mov    $0x736,%esi
mov    $0x100,%r9d
call   10b0 <test_BN_eq_word@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0xd30(%rip),%rdi
lea    0xdf5(%rip),%rdx
mov    $0x737,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
lea    0xe0f(%rip),%rsi
lea    0x8(%rsp),%rdi
call   1090 <BN_asc2bn@plt>
xor    %ecx,%ecx
test   %rax,%rax
setne  %cl
lea    0xcf7(%rip),%rdi
lea    0xdd9(%rip),%rdx
mov    $0x73a,%esi
call   1040 <test_true@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%r8
lea    0xcd2(%rip),%rdi
lea    0xd97(%rip),%rdx
lea    0xdc4(%rip),%rcx
mov    $0x73b,%esi
mov    $0x2a,%r9d
call   1050 <test_BN_abs_eq_word@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0xca0(%rip),%rdi
lea    0xd65(%rip),%rdx
mov    $0x73c,%esi
call   10c0 <test_BN_lt_zero@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
lea    0xd9c(%rip),%rsi
lea    0x8(%rsp),%rdi
call   1090 <BN_asc2bn@plt>
xor    %ecx,%ecx
test   %rax,%rax
setne  %cl
lea    0xc67(%rip),%rdi
lea    0xd63(%rip),%rdx
mov    $0x73f,%esi
call   1040 <test_true@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%r8
lea    0xc42(%rip),%rdi
lea    0xd07(%rip),%rdx
lea    0xd50(%rip),%rcx
mov    $0x740,%esi
mov    $0x1234,%r9d
call   10b0 <test_BN_eq_word@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0xc10(%rip),%rdi
lea    0xcd5(%rip),%rdx
mov    $0x741,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
lea    0xd2c(%rip),%rsi
lea    0x8(%rsp),%rdi
call   1090 <BN_asc2bn@plt>
xor    %ecx,%ecx
test   %rax,%rax
setne  %cl
lea    0xbd7(%rip),%rdi
lea    0xcf3(%rip),%rdx
mov    $0x744,%esi
call   1040 <test_true@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%r8
lea    0xbb2(%rip),%rdi
lea    0xc77(%rip),%rdx
lea    0xcc0(%rip),%rcx
mov    $0x745,%esi
mov    $0x1234,%r9d
call   10b0 <test_BN_eq_word@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0xb80(%rip),%rdi
lea    0xc45(%rip),%rdx
mov    $0x746,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
lea    0xcbd(%rip),%rsi
lea    0x8(%rsp),%rdi
call   1090 <BN_asc2bn@plt>
xor    %ecx,%ecx
test   %rax,%rax
setne  %cl
lea    0xb47(%rip),%rdi
lea    0xc83(%rip),%rdx
mov    $0x749,%esi
call   1040 <test_true@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%r8
lea    0xb22(%rip),%rdi
lea    0xbe7(%rip),%rdx
lea    0xc72(%rip),%rcx
mov    $0x74a,%esi
mov    $0xabcd,%r9d
call   1050 <test_BN_abs_eq_word@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0xaf0(%rip),%rdi
lea    0xbb5(%rip),%rdx
mov    $0x74b,%esi
call   10c0 <test_BN_lt_zero@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
lea    0xc4a(%rip),%rsi
lea    0x8(%rsp),%rdi
call   1090 <BN_asc2bn@plt>
xor    %ecx,%ecx
test   %rax,%rax
setne  %cl
lea    0xab7(%rip),%rdi
lea    0xc15(%rip),%rdx
mov    $0x74e,%esi
call   1040 <test_true@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0xa92(%rip),%rdi
lea    0xb57(%rip),%rdx
mov    $0x74f,%esi
call   1070 <test_BN_eq_zero@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0xa6d(%rip),%rdi
lea    0xb32(%rip),%rdx
mov    $0x750,%esi
call   1030 <test_BN_ge_zero@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
lea    0xbfb(%rip),%rsi
lea    0x8(%rsp),%rdi
call   1090 <BN_asc2bn@plt>
xor    %ecx,%ecx
test   %rax,%rax
setne  %cl
lea    0xa34(%rip),%rdi
lea    0xbaa(%rip),%rdx
mov    $0x753,%esi
call   1040 <test_true@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%r8
lea    0xa13(%rip),%rdi
lea    0xad8(%rip),%rdx
lea    0xbd2(%rip),%rcx
mov    $0x754,%esi
mov    $0x7b,%r9d
call   10b0 <test_BN_eq_word@plt>
test   %eax,%eax
je     1633 <test_asc2bn+0x493>
mov    0x8(%rsp),%rcx
lea    0x9e5(%rip),%rdi
lea    0xaaa(%rip),%rdx
mov    $0x755,%esi
call   1030 <test_BN_ge_zero@plt>
xor    %ebx,%ebx
test   %eax,%eax
setne  %bl
mov    0x8(%rsp),%rdi
call   10a0 <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 = [14 x i8] c"bn = BN_new()\00"
@.str.2 = [20 x i8] c"BN_asc2bn(&bn, \220\22)\00"
@.str.3 = [2 x i8] c"0\00"
@.str.4 = [3 x i8] c"bn\00"
@.str.5 = [22 x i8] c"BN_asc2bn(&bn, \22256\22)\00"
@.str.6 = [4 x i8] c"256\00"
@.str.7 = [22 x i8] c"BN_asc2bn(&bn, \22-42\22)\00"
@.str.8 = [4 x i8] c"-42\00"
@.str.9 = [3 x i8] c"42\00"
@.str.10 = [25 x i8] c"BN_asc2bn(&bn, \220x1234\22)\00"
@.str.11 = [7 x i8] c"0x1234\00"
@.str.12 = [25 x i8] c"BN_asc2bn(&bn, \220X1234\22)\00"
@.str.13 = [7 x i8] c"0X1234\00"
@.str.14 = [26 x i8] c"BN_asc2bn(&bn, \22-0xabcd\22)\00"
@.str.15 = [8 x i8] c"-0xabcd\00"
@.str.16 = [7 x i8] c"0xabcd\00"
@.str.17 = [21 x i8] c"BN_asc2bn(&bn, \22-0\22)\00"
@.str.18 = [3 x i8] c"-0\00"
@.str.19 = [49 x i8] c"BN_asc2bn(&bn, \22123trailing garbage is ignored\22)\00"
@.str.20 = [31 x i8] c"123trailing garbage is ignored\00"
@.str.21 = [4 x i8] c"123\00"
define i32 @test_asc2bn() {
%1 = alloca i32*
%2 = alloca i32
store i32* null, i32** %1
store i32 0, i32* %2
%3 = call i32* (...) @BN_new()
store i32* %3, i32** %1
%4 = call i32 @test_ptr(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1837, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i64 0, i64 0), i32* %3)
%5 = icmp ne i32 %4, 0
br i1 %5, label %7, label %6
6: ; preds = %0
br label %128
7: ; preds = %0
%8 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%9 = icmp ne i64 %8, 0
%10 = zext i1 %9 to i32
%11 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1840, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.2, i64 0, i64 0), i32 %10)
%12 = icmp ne i32 %11, 0
br i1 %12, label %13, label %21
13: ; preds = %7
%14 = load i32*, i32** %1
%15 = call i32 @test_BN_eq_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1841, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %14)
%16 = icmp ne i32 %15, 0
br i1 %16, label %17, label %21
17: ; preds = %13
%18 = load i32*, i32** %1
%19 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1842, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %18)
%20 = icmp ne i32 %19, 0
br i1 %20, label %22, label %21
21: ; preds = %17, %13, %7
br label %128
22: ; preds = %17
%23 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%24 = icmp ne i64 %23, 0
%25 = zext i1 %24 to i32
%26 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1845, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0), i32 %25)
%27 = icmp ne i32 %26, 0
br i1 %27, label %28, label %36
28: ; preds = %22
%29 = load i32*, i32** %1
%30 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1846, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i32* %29, i32 256)
%31 = icmp ne i32 %30, 0
br i1 %31, label %32, label %36
32: ; preds = %28
%33 = load i32*, i32** %1
%34 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1847, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %33)
%35 = icmp ne i32 %34, 0
br i1 %35, label %37, label %36
36: ; preds = %32, %28, %22
br label %128
37: ; preds = %32
%38 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
%39 = icmp ne i64 %38, 0
%40 = zext i1 %39 to i32
%41 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1850, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0), i32 %40)
%42 = icmp ne i32 %41, 0
br i1 %42, label %43, label %51
43: ; preds = %37
%44 = load i32*, i32** %1
%45 = call i32 @test_BN_abs_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1851, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), i32* %44, i32 42)
%46 = icmp ne i32 %45, 0
br i1 %46, label %47, label %51
47: ; preds = %43
%48 = load i32*, i32** %1
%49 = call i32 @test_BN_lt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1852, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %48)
%50 = icmp ne i32 %49, 0
br i1 %50, label %52, label %51
51: ; preds = %47, %43, %37
br label %128
52: ; preds = %47
%53 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0))
%54 = icmp ne i64 %53, 0
%55 = zext i1 %54 to i32
%56 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1855, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.10, i64 0, i64 0), i32 %55)
%57 = icmp ne i32 %56, 0
br i1 %57, label %58, label %66
58: ; preds = %52
%59 = load i32*, i32** %1
%60 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1856, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i32* %59, i32 4660)
%61 = icmp ne i32 %60, 0
br i1 %61, label %62, label %66
62: ; preds = %58
%63 = load i32*, i32** %1
%64 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1857, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %63)
%65 = icmp ne i32 %64, 0
br i1 %65, label %67, label %66
66: ; preds = %62, %58, %52
br label %128
67: ; preds = %62
%68 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.13, i64 0, i64 0))
%69 = icmp ne i64 %68, 0
%70 = zext i1 %69 to i32
%71 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1860, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.12, i64 0, i64 0), i32 %70)
%72 = icmp ne i32 %71, 0
br i1 %72, label %73, label %81
73: ; preds = %67
%74 = load i32*, i32** %1
%75 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1861, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i32* %74, i32 4660)
%76 = icmp ne i32 %75, 0
br i1 %76, label %77, label %81
77: ; preds = %73
%78 = load i32*, i32** %1
%79 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1862, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %78)
%80 = icmp ne i32 %79, 0
br i1 %80, label %82, label %81
81: ; preds = %77, %73, %67
br label %128
82: ; preds = %77
%83 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0))
%84 = icmp ne i64 %83, 0
%85 = zext i1 %84 to i32
%86 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1865, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.14, i64 0, i64 0), i32 %85)
%87 = icmp ne i32 %86, 0
br i1 %87, label %88, label %96
88: ; preds = %82
%89 = load i32*, i32** %1
%90 = call i32 @test_BN_abs_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1866, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0), i32* %89, i32 43981)
%91 = icmp ne i32 %90, 0
br i1 %91, label %92, label %96
92: ; preds = %88
%93 = load i32*, i32** %1
%94 = call i32 @test_BN_lt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1867, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %93)
%95 = icmp ne i32 %94, 0
br i1 %95, label %97, label %96
96: ; preds = %92, %88, %82
br label %128
97: ; preds = %92
%98 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i64 0, i64 0))
%99 = icmp ne i64 %98, 0
%100 = zext i1 %99 to i32
%101 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1870, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.17, i64 0, i64 0), i32 %100)
%102 = icmp ne i32 %101, 0
br i1 %102, label %103, label %111
103: ; preds = %97
%104 = load i32*, i32** %1
%105 = call i32 @test_BN_eq_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1871, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %104)
%106 = icmp ne i32 %105, 0
br i1 %106, label %107, label %111
107: ; preds = %103
%108 = load i32*, i32** %1
%109 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1872, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %108)
%110 = icmp ne i32 %109, 0
br i1 %110, label %112, label %111
111: ; preds = %107, %103, %97
br label %128
112: ; preds = %107
%113 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0))
%114 = icmp ne i64 %113, 0
%115 = zext i1 %114 to i32
%116 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1875, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.19, i64 0, i64 0), i32 %115)
%117 = icmp ne i32 %116, 0
br i1 %117, label %118, label %126
118: ; preds = %112
%119 = load i32*, i32** %1
%120 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1876, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), i32* %119, i32 123)
%121 = icmp ne i32 %120, 0
br i1 %121, label %122, label %126
122: ; preds = %118
%123 = load i32*, i32** %1
%124 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1877, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %123)
%125 = icmp ne i32 %124, 0
br i1 %125, label %127, label %126
126: ; preds = %122, %118, %112
br label %128
127: ; preds = %122
store i32 1, i32* %2
br label %128
128: ; preds = %127, %126, %111, %96, %81, %66, %51, %36, %21, %6
%129 = load i32*, i32** %1
%130 = call i32 @BN_free(i32* %129)
%131 = load i32, i32* %2
ret i32 %131
}

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 = [14 x i8] c"bn = BN_new()\00"
@.str.2 = [20 x i8] c"BN_asc2bn(&bn, \220\22)\00"
@.str.3 = [2 x i8] c"0\00"
@.str.4 = [3 x i8] c"bn\00"
@.str.5 = [22 x i8] c"BN_asc2bn(&bn, \22256\22)\00"
@.str.6 = [4 x i8] c"256\00"
@.str.7 = [22 x i8] c"BN_asc2bn(&bn, \22-42\22)\00"
@.str.8 = [4 x i8] c"-42\00"
@.str.9 = [3 x i8] c"42\00"
@.str.10 = [25 x i8] c"BN_asc2bn(&bn, \220x1234\22)\00"
@.str.11 = [7 x i8] c"0x1234\00"
@.str.12 = [25 x i8] c"BN_asc2bn(&bn, \220X1234\22)\00"
@.str.13 = [7 x i8] c"0X1234\00"
@.str.14 = [26 x i8] c"BN_asc2bn(&bn, \22-0xabcd\22)\00"
@.str.15 = [8 x i8] c"-0xabcd\00"
@.str.16 = [7 x i8] c"0xabcd\00"
@.str.17 = [21 x i8] c"BN_asc2bn(&bn, \22-0\22)\00"
@.str.18 = [3 x i8] c"-0\00"
@.str.19 = [49 x i8] c"BN_asc2bn(&bn, \22123trailing garbage is ignored\22)\00"
@.str.20 = [31 x i8] c"123trailing garbage is ignored\00"
@.str.21 = [4 x i8] c"123\00"
define i32 @test_asc2bn() {
%1 = alloca i32*
%2 = bitcast i32** %1 to i8*
%3 = tail call i32* (...) @BN_new()
store i32* %3, i32** %1
%4 = tail call i32 @test_ptr(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1837, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.1, i64 0, i64 0), i32* %3)
%5 = icmp eq i32 %4, 0
br i1 %5, label %119, label %6
6: ; preds = %0
%7 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
%8 = icmp ne i64 %7, 0
%9 = zext i1 %8 to i32
%10 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1840, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.2, i64 0, i64 0), i32 %9)
%11 = icmp eq i32 %10, 0
br i1 %11, label %119, label %12
12: ; preds = %6
%13 = load i32*, i32** %1
%14 = call i32 @test_BN_eq_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1841, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %13)
%15 = icmp eq i32 %14, 0
br i1 %15, label %119, label %16
16: ; preds = %12
%17 = load i32*, i32** %1
%18 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1842, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %17)
%19 = icmp eq i32 %18, 0
br i1 %19, label %119, label %20
20: ; preds = %16
%21 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%22 = icmp ne i64 %21, 0
%23 = zext i1 %22 to i32
%24 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1845, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.5, i64 0, i64 0), i32 %23)
%25 = icmp eq i32 %24, 0
br i1 %25, label %119, label %26
26: ; preds = %20
%27 = load i32*, i32** %1
%28 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1846, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i32* %27, i32 256)
%29 = icmp eq i32 %28, 0
br i1 %29, label %119, label %30
30: ; preds = %26
%31 = load i32*, i32** %1
%32 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1847, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %31)
%33 = icmp eq i32 %32, 0
br i1 %33, label %119, label %34
34: ; preds = %30
%35 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0))
%36 = icmp ne i64 %35, 0
%37 = zext i1 %36 to i32
%38 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1850, i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.7, i64 0, i64 0), i32 %37)
%39 = icmp eq i32 %38, 0
br i1 %39, label %119, label %40
40: ; preds = %34
%41 = load i32*, i32** %1
%42 = call i32 @test_BN_abs_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1851, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), i32* %41, i32 42)
%43 = icmp eq i32 %42, 0
br i1 %43, label %119, label %44
44: ; preds = %40
%45 = load i32*, i32** %1
%46 = call i32 @test_BN_lt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1852, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %45)
%47 = icmp eq i32 %46, 0
br i1 %47, label %119, label %48
48: ; preds = %44
%49 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0))
%50 = icmp ne i64 %49, 0
%51 = zext i1 %50 to i32
%52 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1855, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.10, i64 0, i64 0), i32 %51)
%53 = icmp eq i32 %52, 0
br i1 %53, label %119, label %54
54: ; preds = %48
%55 = load i32*, i32** %1
%56 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1856, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i32* %55, i32 4660)
%57 = icmp eq i32 %56, 0
br i1 %57, label %119, label %58
58: ; preds = %54
%59 = load i32*, i32** %1
%60 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1857, 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 %119, label %62
62: ; preds = %58
%63 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.13, i64 0, i64 0))
%64 = icmp ne i64 %63, 0
%65 = zext i1 %64 to i32
%66 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1860, i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.12, i64 0, i64 0), i32 %65)
%67 = icmp eq i32 %66, 0
br i1 %67, label %119, label %68
68: ; preds = %62
%69 = load i32*, i32** %1
%70 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1861, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.11, i64 0, i64 0), i32* %69, i32 4660)
%71 = icmp eq i32 %70, 0
br i1 %71, label %119, label %72
72: ; preds = %68
%73 = load i32*, i32** %1
%74 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1862, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %73)
%75 = icmp eq i32 %74, 0
br i1 %75, label %119, label %76
76: ; preds = %72
%77 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.15, i64 0, i64 0))
%78 = icmp ne i64 %77, 0
%79 = zext i1 %78 to i32
%80 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1865, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.14, i64 0, i64 0), i32 %79)
%81 = icmp eq i32 %80, 0
br i1 %81, label %119, label %82
82: ; preds = %76
%83 = load i32*, i32** %1
%84 = call i32 @test_BN_abs_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1866, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([7 x i8], [7 x i8]* @.str.16, i64 0, i64 0), i32* %83, i32 43981)
%85 = icmp eq i32 %84, 0
br i1 %85, label %119, label %86
86: ; preds = %82
%87 = load i32*, i32** %1
%88 = call i32 @test_BN_lt_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1867, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %87)
%89 = icmp eq i32 %88, 0
br i1 %89, label %119, label %90
90: ; preds = %86
%91 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i64 0, i64 0))
%92 = icmp ne i64 %91, 0
%93 = zext i1 %92 to i32
%94 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1870, i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.17, i64 0, i64 0), i32 %93)
%95 = icmp eq i32 %94, 0
br i1 %95, label %119, label %96
96: ; preds = %90
%97 = load i32*, i32** %1
%98 = call i32 @test_BN_eq_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1871, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %97)
%99 = icmp eq i32 %98, 0
br i1 %99, label %119, label %100
100: ; preds = %96
%101 = load i32*, i32** %1
%102 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1872, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %101)
%103 = icmp eq i32 %102, 0
br i1 %103, label %119, label %104
104: ; preds = %100
%105 = call i64 @BN_asc2bn(i32** %1, i8* getelementptr inbounds ([31 x i8], [31 x i8]* @.str.20, i64 0, i64 0))
%106 = icmp ne i64 %105, 0
%107 = zext i1 %106 to i32
%108 = call i32 @test_true(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1875, i8* getelementptr inbounds ([49 x i8], [49 x i8]* @.str.19, i64 0, i64 0), i32 %107)
%109 = icmp eq i32 %108, 0
br i1 %109, label %119, label %110
110: ; preds = %104
%111 = load i32*, i32** %1
%112 = call i32 @test_BN_eq_word(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1876, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), i32* %111, i32 123)
%113 = icmp eq i32 %112, 0
br i1 %113, label %119, label %114
114: ; preds = %110
%115 = load i32*, i32** %1
%116 = call i32 @test_BN_ge_zero(i8* getelementptr inbounds ([170 x i8], [170 x i8]* @.str, i64 0, i64 0), i32 1877, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0), i32* %115)
%117 = icmp ne i32 %116, 0
%118 = zext i1 %117 to i32
br label %119
119: ; preds = %114, %104, %110, %90, %96, %100, %76, %82, %86, %62, %68, %72, %48, %54, %58, %34, %40, %44, %20, %26, %30, %6, %12, %16, %0
%120 = phi i32 [ 0, %110 ], [ 0, %104 ], [ 0, %100 ], [ 0, %96 ], [ 0, %90 ], [ 0, %86 ], [ 0, %82 ], [ 0, %76 ], [ 0, %72 ], [ 0, %68 ], [ 0, %62 ], [ 0, %58 ], [ 0, %54 ], [ 0, %48 ], [ 0, %44 ], [ 0, %40 ], [ 0, %34 ], [ 0, %30 ], [ 0, %26 ], [ 0, %20 ], [ 0, %16 ], [ 0, %12 ], [ 0, %6 ], [ 0, %0 ], [ %118, %114 ]
%121 = load i32*, i32** %1
%122 = call i32 @BN_free(i32* %121)
ret i32 %120
}