From bd124c027ac27cfd81238961efef7e215c390f9c Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Thu, 12 Oct 2023 16:59:11 +1000 Subject: [PATCH 1/3] add example with quantified specs --- .../simplified_http_parse_basic/example.c | 35 ++++++++ .../simplified_http_parse_basic/example.spec | 57 +++++++++++++ .../simplified_http_parse_basic/malloc.md | 26 ++++++ .../string-specs.md | 84 +++++++++++++++++++ 4 files changed, 202 insertions(+) create mode 100644 examples/simplified_http_parse_basic/example.c create mode 100644 examples/simplified_http_parse_basic/example.spec create mode 100644 examples/simplified_http_parse_basic/malloc.md create mode 100644 examples/simplified_http_parse_basic/string-specs.md diff --git a/examples/simplified_http_parse_basic/example.c b/examples/simplified_http_parse_basic/example.c new file mode 100644 index 000000000..69ba0603c --- /dev/null +++ b/examples/simplified_http_parse_basic/example.c @@ -0,0 +1,35 @@ +#include +#include +#include + +#define MALLOC_SIZE 10 + + +// cntlm 22 + +char *buf; +char password = 7; // secret value; has to be a variable so that we get a Gamma_password variable +char stext[11] = "sometext"; + + + +int main() { + char *pos = NULL, *dom = NULL; + + + stext[5] = password; + buf = malloc(strlen(stext) + 1); + memcpy(buf, stext, strlen(stext) + 1); // inlined by -O2 + + puts(buf); + + // find the split between username and password ("username:password") + pos = buf + 2; + + *pos = 0; + + memset(buf, 0, strlen(buf)); + free(buf); // requires secret[i] == true + +} + diff --git a/examples/simplified_http_parse_basic/example.spec b/examples/simplified_http_parse_basic/example.spec new file mode 100644 index 000000000..a17b48513 --- /dev/null +++ b/examples/simplified_http_parse_basic/example.spec @@ -0,0 +1,57 @@ +Globals: +password: char +buf: long +stext: char[11] + + +DIRECT functions: gamma_load64, gamma_load8, memory_load8_le, bvult64, bvule64, bvsub64 + + +Subroutine: #free +Requires DIRECT: "gamma_load64(Gamma_mem, R0)" +Ensures DIRECT: "Gamma_R0 == true" + + +Subroutine: main +Requires: Gamma_password == false + + +Subroutine: malloc +Modifies: R0 +Ensures: buf == old(buf) && password == old(password) +// modifies R0, Gamma_R0; +Ensures DIRECT: "R0 == 990000bv64" +Ensures DIRECT: "Gamma_R0 == true" + + +Subroutine: memcpy +Modifies: mem +Ensures: buf == old(buf) && password == old(password) && stext==old(stext) + Ensures DIRECT: "((memory_load64_le(mem, $buf_addr) == old(memory_load64_le(mem, $buf_addr))) && (memory_load8_le(mem, $password_addr) == old(memory_load8_le(mem, $password_addr))))" + // Works + //ensures (forall i: bv64 :: {mem[i]} (memory_load8_le(mem, i) == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le(old(mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i)))); + // Faster + Ensures DIRECT: "(forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le(old(mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i))))" + // Does not verify with removed \0 write + // ensures (forall i: bv64 :: (memory_load8_le(mem, i) == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le(old(mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i)))); + +// forall i <= n, Gamma_mem[R0] low +Subroutine: memset + Modifies: mem + Ensures DIRECT: "(forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then Gamma_R1 else old(Gamma_mem[i])))" + // Works + //ensures (forall i: bv64 :: {mem[i]} (memory_load8_le(mem, i) == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then R1[8:0] else old(memory_load8_le(mem, i)))); + // Faster + Ensures DIRECT: "(forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then R1[8:0] else old(memory_load8_le(mem, i))))" + // Does not verify with removed \0 write + // ensures (forall i: bv64 :: (memory_load8_le(mem, i) == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then R1[8:0] else old(memory_load8_le(mem, i)))); + + +Subroutine: strlen + Ensures: buf == old(buf) && password == old(password) + Ensures DIRECT: "Gamma_R0 == true" + Ensures DIRECT: "(forall i: bv64 :: (((bvule64(0bv64, i)) && (bvult64(i, R0)) ==> (mem[bvadd64(old(R0), i)] != 0bv8))))" + Ensures DIRECT: "(mem[bvadd64(old(R0), R0)] == 0bv8)" + Ensures DIRECT: "(bvule64(old(R0), bvadd64(old(R0), R0)))" // doesnt overflow + + diff --git a/examples/simplified_http_parse_basic/malloc.md b/examples/simplified_http_parse_basic/malloc.md new file mode 100644 index 000000000..6d62aedb8 --- /dev/null +++ b/examples/simplified_http_parse_basic/malloc.md @@ -0,0 +1,26 @@ + +This has been tested with minimal examples + +Allocator gives a new pointer to a region disjoint from all other regions on each call. + +Todo: Representation compatible with reusing allocated regions that have been freed. + +```bpl +var malloc_count: int; +var malloc_base: [int]bv64; +var malloc_end: [int]bv64; + +procedure malloc(); +modifies mem, Gamma_mem, malloc_count, malloc_base, malloc_end, R0, Gamma_R0; +requires Gamma_R0 == true; +ensures Gamma_R0 == true; +ensures malloc_count == old(malloc_count) + 1; +ensures bvuge64(malloc_end[malloc_count], malloc_base[malloc_count]); +ensures R0 == malloc_base[malloc_count]; +ensures malloc_end[malloc_count] == bvadd64(R0, old(R0)); +ensures (forall i: int :: i != malloc_count ==> bvugt64(malloc_base[malloc_count], malloc_end[i]) || bvult64(malloc_end[malloc_count], malloc_base[i])); +ensures (forall i: int :: i != malloc_count ==> malloc_base[i] == old(malloc_base[i]) && malloc_end[i] == old(malloc_end[i])); +ensures bvuge64(R0, 100000000bv64); // above the got +``` + + diff --git a/examples/simplified_http_parse_basic/string-specs.md b/examples/simplified_http_parse_basic/string-specs.md new file mode 100644 index 000000000..826586373 --- /dev/null +++ b/examples/simplified_http_parse_basic/string-specs.md @@ -0,0 +1,84 @@ +We want general specs for standard library functions and with this example +we made some progress on that front. + +Generalising specifications often requires quantification to summarise loops, +and this requires dealing with the challenges of triggers. + +### Triggers + +In short quantifications are not instantiated in Z3 unless they are 'triggered' +by some existing facts pattern-matching against a chosen subexpression of the +quantification. Normally boogie and Z3 try to choose triggers, but can +struggle if the quantification is not in a "nice" form. Without a good trigger +Z3 responds as if the quantification does not exist, appearing to give "incorrect" +counterexamples. + +In short quantifications which have simple sub-expressions in the left-hand-side +(i.e. the facts we begin with and try to deduce from) to trigger instantiation on +work better. + +Quantification instantiation can also be less reliable when you would +want to trigger on expressions hidden behind a function call, +so it is more reliable to write `mem[i]` than `memory_load8_le(mem, i)`. + + +For example, for the `memset` function the following **does** work: + +```bpl +procedure memset(); + modifies mem, Gamma_mem; + ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then Gamma_R1 else old(Gamma_mem[i]))); + // Works + //ensures (forall i: bv64 :: {mem[i]} (memory_load8_le(mem, i) == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then R1[8:0] else old(memory_load8_le(mem, i)))); + // Faster + ensures (forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then R1[8:0] else old(memory_load8_le(mem, i)))); + // Does not verify + // ensures (forall i: bv64 :: (memory_load8_le(mem, i) == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then R1[8:0] else old(memory_load8_le(mem, i)))); +``` + +Similarly for `memcpy` + + +```bpl +procedure memcpy(); + modifies mem, Gamma_mem; + // Works + //ensures (forall i: bv64 :: {mem[i]} (memory_load8_le(mem, i) == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le(old(mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i)))); + // Faster + ensures (forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le(old(mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i)))); + // Does not verify + // ensures (forall i: bv64 :: (memory_load8_le(mem, i) == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le(old(mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i)))); +``` + +(Thank you to Nick for these examples) + +Similarly `strlen()` works in this form, + +```bpl +procedure strlen(); + modifies R0, Gamma_R0; + ensures Gamma_R0 == true; + ensures (forall i: bv64 :: (bvule64(old(R0), i)) && (bvult64(i, bvadd64(old(R0), R0))) ==> mem[i] != 0bv8); + ensures (memory_load8_le(mem, bvadd64(old(R0), R0)) == 0bv8); + ensures (bvule64(old(R0), bvadd64(old(R0), R0))); +``` + +But **does not** work when we do the address calculation in the load. + +```bpl +procedure strlen(); + // does not work + modifies R0, Gamma_R0; + ensures Gamma_R0 == true; + ensures (forall i: bv64 :: (bvule64(0bv64, i)) && (bvult64(i, R0)) ==> mem[bvadd64(old(R0), i)] != 0bv8); + ensures (memory_load8_le(mem, bvadd64(old(R0), R0)) == 0bv8); + ensures (bvule64(old(R0), bvadd64(old(R0), R0))); +``` + +### Dafny inferred triggers + +Dafny can also infer triggers, which may be worth comparing. To get Dafny to emit its +generated boogie code run it with `dafny -print:a.bpl b.dfy`. + +- https://leino.science/papers/krml253.pdf +- https://github.com/dafny-lang/dafny/wiki/FAQ#how-does-dafny-handle-quantifiers-ive-heard-about-triggers-what-are-those From ba962eaf7c3e5affdcd23f8032315291875c1cc2 Mon Sep 17 00:00:00 2001 From: Alistair Michael Date: Fri, 13 Oct 2023 10:47:14 +1000 Subject: [PATCH 2/3] add lifted files remove old boogie --- .../simplified_http_parse_basic/example.adt | 809 ++++++++++++++++++ .../simplified_http_parse_basic/example.bil | 376 ++++++++ .../simplified_http_parse_basic/example.relf | 143 ++++ .../string-specs.md | 2 +- 4 files changed, 1329 insertions(+), 1 deletion(-) create mode 100644 examples/simplified_http_parse_basic/example.adt create mode 100644 examples/simplified_http_parse_basic/example.bil create mode 100644 examples/simplified_http_parse_basic/example.relf diff --git a/examples/simplified_http_parse_basic/example.adt b/examples/simplified_http_parse_basic/example.adt new file mode 100644 index 000000000..060a173ca --- /dev/null +++ b/examples/simplified_http_parse_basic/example.adt @@ -0,0 +1,809 @@ +Project(Attrs([Attr("filename","\"a.out\""), +Attr("image-specification","(declare abi (name str))\n(declare arch (name str))\n(declare base-address (addr int))\n(declare bias (off int))\n(declare bits (size int))\n(declare code-region (addr int) (size int) (off int))\n(declare code-start (addr int))\n(declare entry-point (addr int))\n(declare external-reference (addr int) (name str))\n(declare format (name str))\n(declare is-executable (flag bool))\n(declare is-little-endian (flag bool))\n(declare llvm:base-address (addr int))\n(declare llvm:code-entry (name str) (off int) (size int))\n(declare llvm:coff-import-library (name str))\n(declare llvm:coff-virtual-section-header (name str) (addr int) (size int))\n(declare llvm:elf-program-header (name str) (off int) (size int))\n(declare llvm:elf-program-header-flags (name str) (ld bool) (r bool) \n (w bool) (x bool))\n(declare llvm:elf-virtual-program-header (name str) (addr int) (size int))\n(declare llvm:entry-point (addr int))\n(declare llvm:macho-symbol (name str) (value int))\n(declare llvm:name-reference (at int) (name str))\n(declare llvm:relocation (at int) (addr int))\n(declare llvm:section-entry (name str) (addr int) (size int) (off int))\n(declare llvm:section-flags (name str) (r bool) (w bool) (x bool))\n(declare llvm:segment-command (name str) (off int) (size int))\n(declare llvm:segment-command-flags (name str) (r bool) (w bool) (x bool))\n(declare llvm:symbol-entry (name str) (addr int) (size int) (off int)\n (value int))\n(declare llvm:virtual-segment-command (name str) (addr int) (size int))\n(declare mapped (addr int) (size int) (off int))\n(declare named-region (addr int) (size int) (name str))\n(declare named-symbol (addr int) (name str))\n(declare require (name str))\n(declare section (addr int) (size int))\n(declare segment (addr int) (size int) (r bool) (w bool) (x bool))\n(declare subarch (name str))\n(declare symbol-chunk (addr int) (size int) (root int))\n(declare symbol-value (addr int) (value int))\n(declare system (name str))\n(declare vendor (name str))\n\n(abi unknown)\n(arch aarch64)\n(base-address 0)\n(bias 0)\n(bits 64)\n(code-region 2508 20 2508)\n(code-region 1984 524 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2036)\n(code-start 1984)\n(code-start 2260)\n(entry-point 1984)\n(external-reference 131008 _ITM_deregisterTMCloneTable)\n(external-reference 131016 __cxa_finalize)\n(external-reference 131024 __gmon_start__)\n(external-reference 131040 _ITM_registerTMCloneTable)\n(external-reference 131072 memcpy)\n(external-reference 131080 strlen)\n(external-reference 131088 __libc_start_main)\n(external-reference 131096 __cxa_finalize)\n(external-reference 131104 malloc)\n(external-reference 131112 memset)\n(external-reference 131120 __gmon_start__)\n(external-reference 131128 abort)\n(external-reference 131136 puts)\n(external-reference 131144 free)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry free 0 0)\n(llvm:code-entry puts 0 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry memset 0 0)\n(llvm:code-entry malloc 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry strlen 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1752 0)\n(llvm:code-entry main 2260 248)\n(llvm:code-entry _start 1984 52)\n(llvm:code-entry free@GLIBC_2.17 0 0)\n(llvm:code-entry puts@GLIBC_2.17 0 0)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry memset@GLIBC_2.17 0 0)\n(llvm:code-entry malloc@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 2508 0)\n(llvm:code-entry __cxa_finalize@GLIBC_2.17 0 0)\n(llvm:code-entry __libc_start_main@GLIBC_2.34 0 0)\n(llvm:code-entry strlen@GLIBC_2.17 0 0)\n(llvm:code-entry memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 2256 0)\n(llvm:code-entry __do_global_dtors_aux 2176 0)\n(llvm:code-entry register_tm_clones 2112 0)\n(llvm:code-entry deregister_tm_clones 2064 0)\n(llvm:code-entry call_weak_fn 2036 20)\n(llvm:code-entry .fini 2508 20)\n(llvm:code-entry .text 1984 524)\n(llvm:code-entry .plt 1776 192)\n(llvm:code-entry .init 1752 24)\n(llvm:elf-program-header 08 64968 568)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2532 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 683)\n(llvm:elf-program-header 02 0 2768)\n(llvm:elf-program-header 01 568 27)\n(llvm:elf-program-header 00 64 504)\n(llvm:elf-program-header-flags 08 false true false false)\n(llvm:elf-program-header-flags 07 false true true false)\n(llvm:elf-program-header-flags 06 false true false false)\n(llvm:elf-program-header-flags 05 false true false false)\n(llvm:elf-program-header-flags 04 false true true false)\n(llvm:elf-program-header-flags 03 true true true false)\n(llvm:elf-program-header-flags 02 true true false true)\n(llvm:elf-program-header-flags 01 false true false false)\n(llvm:elf-program-header-flags 00 false true false false)\n(llvm:elf-virtual-program-header 08 130504 568)\n(llvm:elf-virtual-program-header 07 0 0)\n(llvm:elf-virtual-program-header 06 2532 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130520 480)\n(llvm:elf-virtual-program-header 03 130504 704)\n(llvm:elf-virtual-program-header 02 0 2768)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1984)\n(llvm:name-reference 131144 free)\n(llvm:name-reference 131136 puts)\n(llvm:name-reference 131128 abort)\n(llvm:name-reference 131120 __gmon_start__)\n(llvm:name-reference 131112 memset)\n(llvm:name-reference 131104 malloc)\n(llvm:name-reference 131096 __cxa_finalize)\n(llvm:name-reference 131088 __libc_start_main)\n(llvm:name-reference 131080 strlen)\n(llvm:name-reference 131072 memcpy)\n(llvm:name-reference 131040 _ITM_registerTMCloneTable)\n(llvm:name-reference 131024 __gmon_start__)\n(llvm:name-reference 131016 __cxa_finalize)\n(llvm:name-reference 131008 _ITM_deregisterTMCloneTable)\n(llvm:section-entry .shstrtab 0 259 68706)\n(llvm:section-entry .strtab 0 666 68040)\n(llvm:section-entry .symtab 0 2352 65688)\n(llvm:section-entry .comment 0 30 65651)\n(llvm:section-entry .bss 131192 16 65651)\n(llvm:section-entry .data 131152 35 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130520 480 64984)\n(llvm:section-entry .fini_array 130512 8 64976)\n(llvm:section-entry .init_array 130504 8 64968)\n(llvm:section-entry .eh_frame 2592 176 2592)\n(llvm:section-entry .eh_frame_hdr 2532 60 2532)\n(llvm:section-entry .rodata 2528 4 2528)\n(llvm:section-entry .fini 2508 20 2508)\n(llvm:section-entry .text 1984 524 1984)\n(llvm:section-entry .plt 1776 192 1776)\n(llvm:section-entry .init 1752 24 1752)\n(llvm:section-entry .rela.plt 1512 240 1512)\n(llvm:section-entry .rela.dyn 1320 192 1320)\n(llvm:section-entry .gnu.version_r 1272 48 1272)\n(llvm:section-entry .gnu.version 1236 30 1236)\n(llvm:section-entry .dynstr 1056 179 1056)\n(llvm:section-entry .dynsym 696 360 696)\n(llvm:section-entry .gnu.hash 664 28 664)\n(llvm:section-entry .note.ABI-tag 632 32 632)\n(llvm:section-entry .note.gnu.build-id 596 36 596)\n(llvm:section-entry .interp 568 27 568)\n(llvm:section-flags .shstrtab true false false)\n(llvm:section-flags .strtab true false false)\n(llvm:section-flags .symtab true false false)\n(llvm:section-flags .comment true false false)\n(llvm:section-flags .bss true true false)\n(llvm:section-flags .data true true false)\n(llvm:section-flags .got.plt true true false)\n(llvm:section-flags .got true true false)\n(llvm:section-flags .dynamic true true false)\n(llvm:section-flags .fini_array true true false)\n(llvm:section-flags .init_array true true false)\n(llvm:section-flags .eh_frame true false false)\n(llvm:section-flags .eh_frame_hdr true false false)\n(llvm:section-flags .rodata true false false)\n(llvm:section-flags .fini true false true)\n(llvm:section-flags .text true false true)\n(llvm:section-flags .plt true false true)\n(llvm:section-flags .init true false true)\n(llvm:section-flags .rela.plt true false false)\n(llvm:section-flags .rela.dyn true false false)\n(llvm:section-flags .gnu.version_r true false false)\n(llvm:section-flags .gnu.version true false false)\n(llvm:section-flags .dynstr true false false)\n(llvm:section-flags .dynsym true false false)\n(llvm:section-flags .gnu.hash true false false)\n(llvm:section-flags .note.ABI-tag true false false)\n(llvm:section-flags .note.gnu.build-id true false false)\n(llvm:section-flags .interp true false false)\n(llvm:symbol-entry free 0 0 0 0)\n(llvm:symbol-entry puts 0 0 0 0)\n(llvm:symbol-entry abort 0 0 0 0)\n(llvm:symbol-entry memset 0 0 0 0)\n(llvm:symbol-entry malloc 0 0 0 0)\n(llvm:symbol-entry __cxa_finalize 0 0 0 0)\n(llvm:symbol-entry __libc_start_main 0 0 0 0)\n(llvm:symbol-entry strlen 0 0 0 0)\n(llvm:symbol-entry memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1752 0 1752 1752)\n(llvm:symbol-entry main 2260 248 2260 2260)\n(llvm:symbol-entry _start 1984 52 1984 1984)\n(llvm:symbol-entry free@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry puts@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memset@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry malloc@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 2508 0 2508 2508)\n(llvm:symbol-entry __cxa_finalize@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry __libc_start_main@GLIBC_2.34 0 0 0 0)\n(llvm:symbol-entry strlen@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 2256 0 2256 2256)\n(llvm:symbol-entry __do_global_dtors_aux 2176 0 2176 2176)\n(llvm:symbol-entry register_tm_clones 2112 0 2112 2112)\n(llvm:symbol-entry deregister_tm_clones 2064 0 2064 2064)\n(llvm:symbol-entry call_weak_fn 2036 20 2036 2036)\n(mapped 0 2768 0)\n(mapped 130504 683 64968)\n(named-region 0 2768 02)\n(named-region 130504 704 03)\n(named-region 568 27 .interp)\n(named-region 596 36 .note.gnu.build-id)\n(named-region 632 32 .note.ABI-tag)\n(named-region 664 28 .gnu.hash)\n(named-region 696 360 .dynsym)\n(named-region 1056 179 .dynstr)\n(named-region 1236 30 .gnu.version)\n(named-region 1272 48 .gnu.version_r)\n(named-region 1320 192 .rela.dyn)\n(named-region 1512 240 .rela.plt)\n(named-region 1752 24 .init)\n(named-region 1776 192 .plt)\n(named-region 1984 524 .text)\n(named-region 2508 20 .fini)\n(named-region 2528 4 .rodata)\n(named-region 2532 60 .eh_frame_hdr)\n(named-region 2592 176 .eh_frame)\n(named-region 130504 8 .init_array)\n(named-region 130512 8 .fini_array)\n(named-region 130520 480 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 35 .data)\n(named-region 131192 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 666 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2036 call_weak_fn)\n(named-symbol 2064 deregister_tm_clones)\n(named-symbol 2112 register_tm_clones)\n(named-symbol 2176 __do_global_dtors_aux)\n(named-symbol 2256 frame_dummy)\n(named-symbol 0 memcpy@GLIBC_2.17)\n(named-symbol 0 strlen@GLIBC_2.17)\n(named-symbol 0 __libc_start_main@GLIBC_2.34)\n(named-symbol 0 __cxa_finalize@GLIBC_2.17)\n(named-symbol 2508 _fini)\n(named-symbol 0 malloc@GLIBC_2.17)\n(named-symbol 0 memset@GLIBC_2.17)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 0 puts@GLIBC_2.17)\n(named-symbol 0 free@GLIBC_2.17)\n(named-symbol 1984 _start)\n(named-symbol 2260 main)\n(named-symbol 1752 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 strlen)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 malloc)\n(named-symbol 0 memset)\n(named-symbol 0 abort)\n(named-symbol 0 puts)\n(named-symbol 0 free)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 360)\n(section 1056 179)\n(section 1236 30)\n(section 1272 48)\n(section 1320 192)\n(section 1512 240)\n(section 1752 24)\n(section 1776 192)\n(section 1984 524)\n(section 2508 20)\n(section 2528 4)\n(section 2532 60)\n(section 2592 176)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 35)\n(section 131192 16)\n(section 0 30)\n(section 0 2352)\n(section 0 666)\n(section 0 259)\n(segment 0 2768 true false true)\n(segment 130504 704 true true false)\n(subarch v8)\n(symbol-chunk 2036 20 2036)\n(symbol-chunk 1984 52 1984)\n(symbol-chunk 2260 248 2260)\n(symbol-value 2036 2036)\n(symbol-value 2064 2064)\n(symbol-value 2112 2112)\n(symbol-value 2176 2176)\n(symbol-value 2256 2256)\n(symbol-value 2508 2508)\n(symbol-value 1984 1984)\n(symbol-value 2260 2260)\n(symbol-value 1752 1752)\n(symbol-value 0 0)\n(system \"\")\n(vendor \"\")\n"), +Attr("abi-name","\"aarch64-linux-gnu-elf\"")]), +Sections([Section(".shstrtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01"), +Section(".strtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xe4\x09\x00\x00\x00\x00\x00\x00\xe4\x09\x00\x00\x00\x00\x00\x00\xe4\x09\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x51\xe5\x74\x64\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x52\xe5\x74\x64\x04\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xb8\xd8\x5f\xcb\xfc\xed\xe5\x0c\xea\x5d\x11\x5b\x52\xdc\xdc\x1a\x12\x56\xb9\xe8\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00"), +Section(".symtab", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x68\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1d\x00\x1c\x00\x06\x00\x00\x00\x04\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\xf8\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x04\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\xd0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xab\x02\x00\x00\x00\x00\x00\x00\xc0\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xd8\xfd\x00\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xd8\xfd\x01\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\xe0\x01\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x54\x02\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x44\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x50\xe5\x74\x64\x04\x00\x00\x00\xe4\x09\x00\x00\x00\x00\x00\x00\xe4\x09\x00\x00\x00\x00\x00\x00\xe4\x09\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x51\xe5\x74\x64\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x52\xe5\x74\x64\x04\x00\x00\x00\xc8\xfd\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x38\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00\x00\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xb8\xd8\x5f\xcb\xfc\xed\xe5\x0c\xea\x5d\x11\x5b\x52\xdc\xdc\x1a\x12\x56\xb9\xe8\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x00\x01\x00\x90\x00\x80\x01\x91\x01\x00\x40\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x01\x14\x00\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x86\xff\xff\x97\x00\x04\x00\x91\x90\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9"), +Section(".comment", 0x0, "\x7f\x45\x4c\x46\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\xc0\x07\x00\x00\x00\x00"), +Section(".interp", 0x238, "\x2f\x6c\x69\x62\x2f\x6c\x64\x2d\x6c\x69\x6e\x75\x78\x2d\x61\x61\x72\x63\x68\x36\x34\x2e\x73\x6f\x2e\x31\x00"), +Section(".note.gnu.build-id", 0x254, "\x04\x00\x00\x00\x14\x00\x00\x00\x03\x00\x00\x00\x47\x4e\x55\x00\xb8\xd8\x5f\xcb\xfc\xed\xe5\x0c\xea\x5d\x11\x5b\x52\xdc\xdc\x1a\x12\x56\xb9\xe8"), +Section(".note.ABI-tag", 0x278, "\x04\x00\x00\x00\x10\x00\x00\x00\x01\x00\x00\x00\x47\x4e\x55\x00\x00\x00\x00\x00\x03\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00"), +Section(".gnu.hash", 0x298, "\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynsym", 0x2B8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x0b\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x50\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x2b\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x12\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x3a\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x8a\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x99\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".dynstr", 0x420, "\x00\x70\x75\x74\x73\x00\x66\x72\x65\x65\x00\x73\x74\x72\x6c\x65\x6e\x00\x6d\x61\x6c\x6c\x6f\x63\x00\x5f\x5f\x6c\x69\x62\x63\x5f\x73\x74\x61\x72\x74\x5f\x6d\x61\x69\x6e\x00\x5f\x5f\x63\x78\x61\x5f\x66\x69\x6e\x61\x6c\x69\x7a\x65\x00\x6d\x65\x6d\x73\x65\x74\x00\x6d\x65\x6d\x63\x70\x79\x00\x61\x62\x6f\x72\x74\x00\x6c\x69\x62\x63\x2e\x73\x6f\x2e\x36\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x33\x34\x00\x47\x4c\x49\x42\x43\x5f\x32\x2e\x31\x37\x00\x5f\x49\x54\x4d\x5f\x64\x65\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00\x5f\x5f\x67\x6d\x6f\x6e\x5f\x73\x74\x61\x72\x74\x5f\x5f\x00\x5f\x49\x54\x4d\x5f\x72\x65\x67\x69\x73\x74\x65\x72\x54\x4d\x43\x6c\x6f\x6e\x65\x54\x61\x62\x6c\x65\x00"), +Section(".gnu.version", 0x4D4, "\x00\x00\x00\x00\x00\x00\x02\x00\x02\x00\x03\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00\x02\x00\x02\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x4F8, "\x01\x00\x02\x00\x4e\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x58\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x63\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x528, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd0\x08\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x80\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x0e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x5E8, "\x00\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x38\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x48\x00\x02\x00\x00\x00\x00\x00\x02\x04\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init", 0x6D8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x44\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x6F0, "\xf0\x7b\xbf\xa9\xf0\x00\x00\xf0\x11\xfe\x47\xf9\x10\xe2\x3f\x91\x20\x02\x1f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x10\x01\x00\x90\x11\x02\x40\xf9\x10\x02\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x06\x40\xf9\x10\x22\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0a\x40\xf9\x10\x42\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x0e\x40\xf9\x10\x62\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x12\x40\xf9\x10\x82\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x16\x40\xf9\x10\xa2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1a\x40\xf9\x10\xc2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x1e\x40\xf9\x10\xe2\x00\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x22\x40\xf9\x10\x02\x01\x91\x20\x02\x1f\xd6\x10\x01\x00\x90\x11\x26\x40\xf9\x10\x22\x01\x91\x20\x02\x1f\xd6"), +Section(".fini", 0x9CC, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9E0, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9E4, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\xdc\xfd\xff\xff\x50\x00\x00\x00\x2c\xfe\xff\xff\x64\x00\x00\x00\x5c\xfe\xff\xff\x78\x00\x00\x00\x9c\xfe\xff\xff\x8c\x00\x00\x00\xec\xfe\xff\xff\xb0\x00\x00\x00\xf0\xfe\xff\xff\xc4\x00\x00\x00"), +Section(".eh_frame", 0xA20, "\x10\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x04\x78\x1e\x01\x1b\x0c\x1f\x00\x10\x00\x00\x00\x18\x00\x00\x00\x84\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xc0\xfd\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\xdc\xfd\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x08\xfe\xff\xff\x48\x00\x00\x00\x00\x41\x0e\x20\x9d\x04\x9e\x03\x42\x93\x02\x4e\xde\xdd\xd3\x0e\x00\x00\x00\x00\x10\x00\x00\x00\x78\x00\x00\x00\x34\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x8c\x00\x00\x00\x24\xfe\xff\xff\xf8\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x42\x93\x04\x7a\xde\xdd\xd3\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x80\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xd8\x06\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xcc\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xc8\xfd\x01\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x20\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\xb8\x02\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xe8\xff\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0\x00\x00\x00\x00\x00\x00\x00\x14\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x17\x00\x00\x00\x00\x00\x00\x00\xe8\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x28\x05\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\xc0\x00\x00\x00\x00\x00\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x00\x00\xfb\xff\xff\x6f\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\xfe\xff\xff\x6f\x00\x00\x00\x00\xf8\x04\x00\x00\x00\x00\x00\x00\xff\xff\xff\x6f\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\xf0\xff\xff\x6f\x00\x00\x00\x00\xd4\x04\x00\x00\x00\x00\x00\x00\xf9\xff\xff\x6f\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\xd0\x08\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xd8\xfd\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd4\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".got.plt", 0x1FFE8, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00\xf0\x06\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20050, "\x00\x00\x00\x00\x00\x00\x00\x00\x58\x00\x02\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x73\x6f\x6d\x65\x74\x65\x78\x74\x00\x00\x00"), +Section(".text", 0x7C0, "\x1f\x20\x03\xd5\x1d\x00\x80\xd2\x1e\x00\x80\xd2\xe5\x03\x00\xaa\xe1\x03\x40\xf9\xe2\x23\x00\x91\xe6\x03\x00\x91\xe0\x00\x00\xf0\x00\xec\x47\xf9\x03\x00\x80\xd2\x04\x00\x80\xd2\xd1\xff\xff\x97\xe4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xdc\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x3f\x00\x00\xeb\xc0\x00\x00\x54\xe1\x00\x00\xf0\x21\xe0\x47\xf9\x61\x00\x00\xb4\xf0\x03\x01\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x00\x01\x00\x90\x00\xe0\x01\x91\x01\x01\x00\x90\x21\xe0\x01\x91\x21\x00\x00\xcb\x22\xfc\x7f\xd3\x41\x0c\x81\x8b\x21\xfc\x41\x93\xc1\x00\x00\xb4\xe2\x00\x00\xf0\x42\xf0\x47\xf9\x62\x00\x00\xb4\xf0\x03\x02\xaa\x00\x02\x1f\xd6\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\xfd\x7b\xbe\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\x13\x01\x00\x90\x60\xe2\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x2c\x40\xf9\xa5\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xe2\x01\x39\xf3\x0b\x40\xf9\xfd\x7b\xc2\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\xdc\xff\xff\x17\xfd\x7b\xbd\xa9\xfd\x03\x00\x91\xf3\x0b\x00\xf9\xff\x17\x00\xf9\xff\x13\x00\xf9\x00\x01\x00\x90\x00\x80\x01\x91\x01\x00\x40\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x01\x14\x00\x39\x00\x01\x00\x90\x00\xa0\x01\x91\x86\xff\xff\x97\x00\x04\x00\x91\x90\xff\xff\x97\xe1\x03\x00\xaa\x00\x01\x00\x90\x00\x00\x02\x91\x01\x00\x00\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\xa0\x01\x91\x7a\xff\xff\x97\x00\x04\x00\x91\xe2\x03\x00\xaa\x00\x01\x00\x90\x01\xa0\x01\x91\xe0\x03\x13\xaa\x70\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x8c\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x00\x08\x00\x91\xe0\x17\x00\xf9\xe0\x17\x40\xf9\x1f\x00\x00\x39\x00\x01\x00\x90\x00\x00\x02\x91\x13\x00\x40\xf9\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x62\xff\xff\x97\xe2\x03\x00\xaa\x01\x00\x80\x52\xe0\x03\x13\xaa\x6e\xff\xff\x97\x00\x01\x00\x90\x00\x00\x02\x91\x00\x00\x40\xf9\x7a\xff\xff\x97\x00\x00\x80\x52\xf3\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xACF), Attr("segment","02 0 2768")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x299), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x92F), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x1D), Attr("section","\".comment\"")), +Annotation(Region(0x238,0x252), Attr("section","\".interp\"")), +Annotation(Region(0x254,0x277), Attr("section","\".note.gnu.build-id\"")), +Annotation(Region(0x278,0x297), Attr("section","\".note.ABI-tag\"")), +Annotation(Region(0x298,0x2B3), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x2B8,0x41F), Attr("section","\".dynsym\"")), +Annotation(Region(0x420,0x4D2), Attr("section","\".dynstr\"")), +Annotation(Region(0x4D4,0x4F1), Attr("section","\".gnu.version\"")), +Annotation(Region(0x4F8,0x527), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x528,0x5E7), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x5E8,0x6D7), Attr("section","\".rela.plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("section","\".init\"")), +Annotation(Region(0x6F0,0x7AF), Attr("section","\".plt\"")), +Annotation(Region(0x6D8,0x6EF), Attr("code-region","()")), +Annotation(Region(0x6F0,0x7AF), Attr("code-region","()")), +Annotation(Region(0x7C0,0x7F3), Attr("symbol-info","_start 0x7C0 52")), +Annotation(Region(0x7F4,0x807), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x7F4,0x807), Attr("symbol-info","call_weak_fn 0x7F4 20")), +Annotation(Region(0x8D4,0x9CB), Attr("symbol","\"main\"")), +Annotation(Region(0x8D4,0x9CB), Attr("symbol-info","main 0x8D4 248")), +Annotation(Region(0x9CC,0x9DF), Attr("section","\".fini\"")), +Annotation(Region(0x9E0,0x9E3), Attr("section","\".rodata\"")), +Annotation(Region(0x9E4,0xA1F), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0xA20,0xACF), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x20072), Attr("segment","03 0x1FDC8 704")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x20072), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x9CB), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x9CB), Attr("code-region","()")), +Annotation(Region(0x9CC,0x9DF), Attr("code-region","()"))]), +Program(Tid(2_283, "%000008eb"), Attrs([]), + Subs([Sub(Tid(2_212, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_284, "%000008ec"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("__cxa_finalize_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_402, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_790, "%000006fe"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_797, "%00000705"), Attrs([Attr("address","0x744"), +Attr("insn","ldr x17, [x16, #0x18]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(24,64)),LittleEndian(),64)), +Def(Tid(1_803, "%0000070b"), Attrs([Attr("address","0x748"), +Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_808, "%00000710"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_213, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_285, "%000008ed"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("__do_global_dtors_aux_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(839, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(843, "%0000034b"), + Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(849, "%00000351"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#3",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(855, "%00000357"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(859, "%0000035b"), Attrs([Attr("address","0x880"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(865, "%00000361"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(873, "%00000369"), + Attrs([Attr("address","0x888"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(878, "%0000036e"), Attrs([Attr("address","0x88C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(885, "%00000375"), Attrs([Attr("address","0x890"), +Attr("insn","ldrb w0, [x19, #0x78]")]), Var("R0",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(891, "%0000037b"), Attrs([Attr("address","0x894"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(889, "%00000379"))), +Goto(Tid(2_273, "%000008e1"), Attrs([]), Int(1,1), +Direct(Tid(1_347, "%00000543")))])), Blk(Tid(1_347, "%00000543"), + Attrs([Attr("address","0x898")]), Phis([]), +Defs([Def(Tid(1_350, "%00000546"), Attrs([Attr("address","0x898"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_357, "%0000054d"), Attrs([Attr("address","0x89C"), +Attr("insn","ldr x0, [x0, #0xfc8]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4040,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_363, "%00000553"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_361, "%00000551"))), Goto(Tid(2_274, "%000008e2"), Attrs([]), + Int(1,1), Direct(Tid(1_386, "%0000056a")))])), Blk(Tid(1_386, "%0000056a"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_389, "%0000056d"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_396, "%00000574"), Attrs([Attr("address","0x8A8"), +Attr("insn","ldr x0, [x0, #0x58]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(88,64)),LittleEndian(),64)), +Def(Tid(1_401, "%00000579"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(1_404, "%0000057c"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x16c")]), Int(1,1), +(Direct(Tid(2_212, "@__cxa_finalize")),Direct(Tid(1_361, "%00000551"))))])), +Blk(Tid(1_361, "%00000551"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_369, "%00000559"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(1_371, "%0000055b"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_226, "@deregister_tm_clones")),Direct(Tid(1_373, "%0000055d"))))])), +Blk(Tid(1_373, "%0000055d"), Attrs([Attr("address","0x8B4")]), Phis([]), +Defs([Def(Tid(1_376, "%00000560"), Attrs([Attr("address","0x8B4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_384, "%00000568"), Attrs([Attr("address","0x8B8"), +Attr("insn","strb w0, [x19, #0x78]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(120,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_275, "%000008e3"), Attrs([]), Int(1,1), +Direct(Tid(889, "%00000379")))])), Blk(Tid(889, "%00000379"), + Attrs([Attr("address","0x8BC")]), Phis([]), Defs([Def(Tid(899, "%00000383"), + Attrs([Attr("address","0x8BC"), Attr("insn","ldr x19, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(906, "%0000038a"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(911, "%0000038f"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(915, "%00000393"), Attrs([Attr("address","0x8C0"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(920, "%00000398"), + Attrs([Attr("address","0x8C4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_217, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("address","0x730"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_286, "%000008ee"), + Attrs([Attr("c.layout","**[ : 64]"), +Attr("c.data","Top:u64 ptr ptr"), +Attr("c.type","signed (*)(signed , char** , char** );*")]), + Var("__libc_start_main_main",Imm(64)), Var("R0",Imm(64)), In()), +Arg(Tid(2_287, "%000008ef"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("__libc_start_main_arg2",Imm(32)), LOW(32,Var("R1",Imm(64))), In()), +Arg(Tid(2_288, "%000008f0"), Attrs([Attr("c.layout","**[char : 8]"), +Attr("c.data","Top:u8 ptr ptr"), Attr("c.type","char**")]), + Var("__libc_start_main_arg3",Imm(64)), Var("R2",Imm(64)), Both()), +Arg(Tid(2_289, "%000008f1"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("__libc_start_main_auxv",Imm(64)), Var("R3",Imm(64)), Both()), +Arg(Tid(2_290, "%000008f2"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("__libc_start_main_result",Imm(32)), LOW(32,Var("R0",Imm(64))), +Out())]), Blks([Blk(Tid(672, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_768, "%000006e8"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_775, "%000006ef"), Attrs([Attr("address","0x734"), +Attr("insn","ldr x17, [x16, #0x10]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_781, "%000006f5"), Attrs([Attr("address","0x738"), +Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_786, "%000006fa"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_218, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9CC")]), + "_fini", Args([Arg(Tid(2_291, "%000008f3"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("_fini_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(32, "@_fini"), + Attrs([Attr("address","0x9CC")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x9D0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(44, "%0000002c"), Attrs([Attr("address","0x9D0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#0",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(50, "%00000032"), Attrs([Attr("address","0x9D0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#0",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(54, "%00000036"), Attrs([Attr("address","0x9D0"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9D4"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9D8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(72, "%00000048"), Attrs([Attr("address","0x9D8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(76, "%0000004c"), Attrs([Attr("address","0x9D8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(81, "%00000051"), + Attrs([Attr("address","0x9DC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_219, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_292, "%000008f4"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("_init_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(1_968, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_974, "%000007b6"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_980, "%000007bc"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_986, "%000007c2"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_990, "%000007c6"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#6",Imm(64))), Def(Tid(1_996, "%000007cc"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(2_001, "%000007d1"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(2_003, "%000007d3"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x110")]), Int(1,1), +(Direct(Tid(2_224, "@call_weak_fn")),Direct(Tid(2_005, "%000007d5"))))])), +Blk(Tid(2_005, "%000007d5"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(2_010, "%000007da"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(2_015, "%000007df"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(2_019, "%000007e3"), Attrs([Attr("address","0x6E8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(2_024, "%000007e8"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_220, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7C0"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_293, "%000008f5"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("_start_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(609, "@_start"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(614, "%00000266"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(619, "%0000026b"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(625, "%00000271"), + Attrs([Attr("address","0x7CC"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(632, "%00000278"), + Attrs([Attr("address","0x7D0"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(638, "%0000027e"), Attrs([Attr("address","0x7D4"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(644, "%00000284"), + Attrs([Attr("address","0x7D8"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(649, "%00000289"), + Attrs([Attr("address","0x7DC"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(656, "%00000290"), + Attrs([Attr("address","0x7E0"), Attr("insn","ldr x0, [x0, #0xfd8]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4056,64)),LittleEndian(),64)), +Def(Tid(661, "%00000295"), Attrs([Attr("address","0x7E4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(666, "%0000029a"), Attrs([Attr("address","0x7E8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(671, "%0000029f"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Var("R30",Imm(64)), Int(2032,64))]), +Jmps([Call(Tid(674, "%000002a2"), Attrs([Attr("address","0x7EC"), +Attr("insn","bl #-0xbc")]), Int(1,1), +(Direct(Tid(2_217, "@__libc_start_main")),Direct(Tid(676, "%000002a4"))))])), +Blk(Tid(676, "%000002a4"), Attrs([Attr("address","0x7F0")]), Phis([]), +Defs([Def(Tid(679, "%000002a7"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(682, "%000002aa"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0x70")]), Int(1,1), +(Direct(Tid(2_223, "@abort")),Direct(Tid(2_276, "%000008e4"))))])), +Blk(Tid(2_276, "%000008e4"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_277, "%000008e5"), Attrs([]), Int(1,1), +(Direct(Tid(2_224, "@call_weak_fn")),))]))])), Sub(Tid(2_223, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(680, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_878, "%00000756"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_885, "%0000075d"), Attrs([Attr("address","0x784"), +Attr("insn","ldr x17, [x16, #0x38]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(56,64)),LittleEndian(),64)), +Def(Tid(1_891, "%00000763"), Attrs([Attr("address","0x788"), +Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_896, "%00000768"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_224, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x7F4")]), + "call_weak_fn", Args([Arg(Tid(2_294, "%000008f6"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("call_weak_fn_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(684, "@call_weak_fn"), + Attrs([Attr("address","0x7F4")]), Phis([]), Defs([Def(Tid(687, "%000002af"), + Attrs([Attr("address","0x7F4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(694, "%000002b6"), + Attrs([Attr("address","0x7F8"), Attr("insn","ldr x0, [x0, #0xfd0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4048,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(700, "%000002bc"), Attrs([Attr("address","0x7FC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(698, "%000002ba"))), Goto(Tid(2_278, "%000008e6"), Attrs([]), + Int(1,1), Direct(Tid(1_466, "%000005ba")))])), Blk(Tid(698, "%000002ba"), + Attrs([Attr("address","0x804")]), Phis([]), Defs([]), +Jmps([Call(Tid(706, "%000002c2"), Attrs([Attr("address","0x804"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_466, "%000005ba"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_469, "%000005bd"), Attrs([Attr("address","0x800"), +Attr("insn","b #-0x90")]), Int(1,1), +Direct(Tid(1_467, "@__gmon_start__")))])), Blk(Tid(1_467, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_856, "%00000740"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_863, "%00000747"), Attrs([Attr("address","0x774"), +Attr("insn","ldr x17, [x16, #0x30]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(48,64)),LittleEndian(),64)), +Def(Tid(1_869, "%0000074d"), Attrs([Attr("address","0x778"), +Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_874, "%00000752"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_226, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x810")]), + "deregister_tm_clones", Args([Arg(Tid(2_295, "%000008f7"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("deregister_tm_clones_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(712, "@deregister_tm_clones"), + Attrs([Attr("address","0x810")]), Phis([]), Defs([Def(Tid(715, "%000002cb"), + Attrs([Attr("address","0x810"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(721, "%000002d1"), + Attrs([Attr("address","0x814"), Attr("insn","add x0, x0, #0x78")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(120,64))), +Def(Tid(726, "%000002d6"), Attrs([Attr("address","0x818"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(732, "%000002dc"), Attrs([Attr("address","0x81C"), +Attr("insn","add x1, x1, #0x78")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(120,64))), Def(Tid(738, "%000002e2"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(743, "%000002e7"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(749, "%000002ed"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(755, "%000002f3"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#2",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#1",Imm(64)))),Int(1,65)))), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x820"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(763, "%000002fb"), + Attrs([Attr("address","0x820"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(769, "%00000301"), Attrs([Attr("address","0x824"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(767, "%000002ff"))), Goto(Tid(2_279, "%000008e7"), Attrs([]), + Int(1,1), Direct(Tid(1_436, "%0000059c")))])), Blk(Tid(1_436, "%0000059c"), + Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(1_439, "%0000059f"), Attrs([Attr("address","0x828"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_446, "%000005a6"), Attrs([Attr("address","0x82C"), +Attr("insn","ldr x1, [x1, #0xfc0]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R1",Imm(64)),Int(4032,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x830"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(767, "%000002ff"))), Goto(Tid(2_280, "%000008e8"), Attrs([]), + Int(1,1), Direct(Tid(1_455, "%000005af")))])), Blk(Tid(767, "%000002ff"), + Attrs([Attr("address","0x83C")]), Phis([]), Defs([]), +Jmps([Call(Tid(775, "%00000307"), Attrs([Attr("address","0x83C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_455, "%000005af"), Attrs([Attr("address","0x834")]), Phis([]), +Defs([Def(Tid(1_459, "%000005b3"), Attrs([Attr("address","0x834"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_464, "%000005b8"), Attrs([Attr("address","0x838"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_229, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x8D0")]), "frame_dummy", Args([Arg(Tid(2_296, "%000008f8"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("frame_dummy_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(926, "@frame_dummy"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([]), +Jmps([Call(Tid(928, "%000003a0"), Attrs([Attr("address","0x8D0"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_236, "@register_tm_clones")),))]))])), Sub(Tid(2_230, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_297, "%000008f9"), + Attrs([Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), +Attr("c.type","void*")]), Var("free_ptr",Imm(64)), Var("R0",Imm(64)), +Both())]), Blks([Blk(Tid(1_310, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_922, "%00000782"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_929, "%00000789"), Attrs([Attr("address","0x7A4"), +Attr("insn","ldr x17, [x16, #0x48]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(72,64)),LittleEndian(),64)), +Def(Tid(1_935, "%0000078f"), Attrs([Attr("address","0x7A8"), +Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_940, "%00000794"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_231, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x8D4")]), "main", Args([Arg(Tid(2_298, "%000008fa"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("main_argc",Imm(32)), +LOW(32,Var("R0",Imm(64))), In()), Arg(Tid(2_299, "%000008fb"), + Attrs([Attr("c.layout","**[char : 8]"), Attr("c.data","Top:u8 ptr ptr"), +Attr("c.type"," const char**")]), Var("main_argv",Imm(64)), +Var("R1",Imm(64)), Both()), Arg(Tid(2_300, "%000008fc"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("main_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(930, "@main"), + Attrs([Attr("address","0x8D4")]), Phis([]), Defs([Def(Tid(934, "%000003a6"), + Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(940, "%000003ac"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#4",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(950, "%000003b6"), Attrs([Attr("address","0x8D4"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#4",Imm(64))), Def(Tid(956, "%000003bc"), + Attrs([Attr("address","0x8D8"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(964, "%000003c4"), + Attrs([Attr("address","0x8DC"), Attr("insn","str x19, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(971, "%000003cb"), Attrs([Attr("address","0x8E0"), +Attr("insn","str xzr, [sp, #0x28]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(978, "%000003d2"), Attrs([Attr("address","0x8E4"), +Attr("insn","str xzr, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Int(0,64),LittleEndian(),64)), +Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x8E8"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x8EC"), +Attr("insn","add x0, x0, #0x60")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(96,64))), Def(Tid(996, "%000003e4"), + Attrs([Attr("address","0x8F0"), Attr("insn","ldrb w1, [x0]")]), + Var("R1",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),8))), +Def(Tid(1_001, "%000003e9"), Attrs([Attr("address","0x8F4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x8F8"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_015, "%000003f7"), + Attrs([Attr("address","0x8FC"), Attr("insn","strb w1, [x0, #0x5]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(5,64)),Extract(7,0,Var("R1",Imm(64))),LittleEndian(),8)), +Def(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x900"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_026, "%00000402"), Attrs([Attr("address","0x904"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_031, "%00000407"), + Attrs([Attr("address","0x908"), Attr("insn","bl #-0x1e8")]), + Var("R30",Imm(64)), Int(2316,64))]), Jmps([Call(Tid(1_034, "%0000040a"), + Attrs([Attr("address","0x908"), Attr("insn","bl #-0x1e8")]), Int(1,1), +(Direct(Tid(2_239, "@strlen")),Direct(Tid(1_036, "%0000040c"))))])), +Blk(Tid(1_036, "%0000040c"), Attrs([Attr("address","0x90C")]), Phis([]), +Defs([Def(Tid(1_040, "%00000410"), Attrs([Attr("address","0x90C"), +Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_045, "%00000415"), + Attrs([Attr("address","0x910"), Attr("insn","bl #-0x1c0")]), + Var("R30",Imm(64)), Int(2324,64))]), Jmps([Call(Tid(1_048, "%00000418"), + Attrs([Attr("address","0x910"), Attr("insn","bl #-0x1c0")]), Int(1,1), +(Direct(Tid(2_232, "@malloc")),Direct(Tid(1_050, "%0000041a"))))])), +Blk(Tid(1_050, "%0000041a"), Attrs([Attr("address","0x914")]), Phis([]), +Defs([Def(Tid(1_054, "%0000041e"), Attrs([Attr("address","0x914"), +Attr("insn","mov x1, x0")]), Var("R1",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_059, "%00000423"), Attrs([Attr("address","0x918"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_065, "%00000429"), Attrs([Attr("address","0x91C"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_073, "%00000431"), + Attrs([Attr("address","0x920"), Attr("insn","str x1, [x0]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Var("R1",Imm(64)),LittleEndian(),64)), +Def(Tid(1_078, "%00000436"), Attrs([Attr("address","0x924"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x928"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_091, "%00000443"), + Attrs([Attr("address","0x92C"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x930"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_102, "%0000044e"), Attrs([Attr("address","0x934"), +Attr("insn","add x0, x0, #0x68")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(104,64))), Def(Tid(1_107, "%00000453"), + Attrs([Attr("address","0x938"), Attr("insn","bl #-0x218")]), + Var("R30",Imm(64)), Int(2364,64))]), Jmps([Call(Tid(1_109, "%00000455"), + Attrs([Attr("address","0x938"), Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_239, "@strlen")),Direct(Tid(1_111, "%00000457"))))])), +Blk(Tid(1_111, "%00000457"), Attrs([Attr("address","0x93C")]), Phis([]), +Defs([Def(Tid(1_115, "%0000045b"), Attrs([Attr("address","0x93C"), +Attr("insn","add x0, x0, #0x1")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_121, "%00000461"), + Attrs([Attr("address","0x940"), Attr("insn","mov x2, x0")]), + Var("R2",Imm(64)), Var("R0",Imm(64))), Def(Tid(1_126, "%00000466"), + Attrs([Attr("address","0x944"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(1_132, "%0000046c"), + Attrs([Attr("address","0x948"), Attr("insn","add x1, x0, #0x68")]), + Var("R1",Imm(64)), PLUS(Var("R0",Imm(64)),Int(104,64))), +Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x94C"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x240")]), Var("R30",Imm(64)), Int(2388,64))]), +Jmps([Call(Tid(1_146, "%0000047a"), Attrs([Attr("address","0x950"), +Attr("insn","bl #-0x240")]), Int(1,1), +(Direct(Tid(2_233, "@memcpy")),Direct(Tid(1_148, "%0000047c"))))])), +Blk(Tid(1_148, "%0000047c"), Attrs([Attr("address","0x954")]), Phis([]), +Defs([Def(Tid(1_151, "%0000047f"), Attrs([Attr("address","0x954"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_157, "%00000485"), Attrs([Attr("address","0x958"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_164, "%0000048c"), + Attrs([Attr("address","0x95C"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_169, "%00000491"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2404,64))]), +Jmps([Call(Tid(1_172, "%00000494"), Attrs([Attr("address","0x960"), +Attr("insn","bl #-0x1d0")]), Int(1,1), +(Direct(Tid(2_235, "@puts")),Direct(Tid(1_174, "%00000496"))))])), +Blk(Tid(1_174, "%00000496"), Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_177, "%00000499"), Attrs([Attr("address","0x964"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x968"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_190, "%000004a6"), + Attrs([Attr("address","0x96C"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x970"), +Attr("insn","add x0, x0, #0x2")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(2,64))), Def(Tid(1_204, "%000004b4"), + Attrs([Attr("address","0x974"), Attr("insn","str x0, [sp, #0x28]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x978"), +Attr("insn","ldr x0, [sp, #0x28]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(40,64)),LittleEndian(),64)), +Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x97C"), +Attr("insn","strb wzr, [x0]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("R0",Imm(64)),Int(0,8),LittleEndian(),8)), +Def(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x980"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_229, "%000004cd"), Attrs([Attr("address","0x984"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_236, "%000004d4"), + Attrs([Attr("address","0x988"), Attr("insn","ldr x19, [x0]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x98C"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_247, "%000004df"), Attrs([Attr("address","0x990"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_254, "%000004e6"), + Attrs([Attr("address","0x994"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_259, "%000004eb"), Attrs([Attr("address","0x998"), +Attr("insn","bl #-0x278")]), Var("R30",Imm(64)), Int(2460,64))]), +Jmps([Call(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x998"), +Attr("insn","bl #-0x278")]), Int(1,1), +(Direct(Tid(2_239, "@strlen")),Direct(Tid(1_263, "%000004ef"))))])), +Blk(Tid(1_263, "%000004ef"), Attrs([Attr("address","0x99C")]), Phis([]), +Defs([Def(Tid(1_267, "%000004f3"), Attrs([Attr("address","0x99C"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x9A0"), +Attr("insn","mov w1, #0x0")]), Var("R1",Imm(64)), Int(0,64)), +Def(Tid(1_278, "%000004fe"), Attrs([Attr("address","0x9A4"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_283, "%00000503"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x248")]), Var("R30",Imm(64)), Int(2476,64))]), +Jmps([Call(Tid(1_286, "%00000506"), Attrs([Attr("address","0x9A8"), +Attr("insn","bl #-0x248")]), Int(1,1), +(Direct(Tid(2_234, "@memset")),Direct(Tid(1_288, "%00000508"))))])), +Blk(Tid(1_288, "%00000508"), Attrs([Attr("address","0x9AC")]), Phis([]), +Defs([Def(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x9AC"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_297, "%00000511"), Attrs([Attr("address","0x9B0"), +Attr("insn","add x0, x0, #0x80")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(128,64))), Def(Tid(1_304, "%00000518"), + Attrs([Attr("address","0x9B4"), Attr("insn","ldr x0, [x0]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(1_309, "%0000051d"), Attrs([Attr("address","0x9B8"), +Attr("insn","bl #-0x218")]), Var("R30",Imm(64)), Int(2492,64))]), +Jmps([Call(Tid(1_312, "%00000520"), Attrs([Attr("address","0x9B8"), +Attr("insn","bl #-0x218")]), Int(1,1), +(Direct(Tid(2_230, "@free")),Direct(Tid(1_314, "%00000522"))))])), +Blk(Tid(1_314, "%00000522"), Attrs([Attr("address","0x9BC")]), Phis([]), +Defs([Def(Tid(1_317, "%00000525"), Attrs([Attr("address","0x9BC"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_324, "%0000052c"), Attrs([Attr("address","0x9C0"), +Attr("insn","ldr x19, [sp, #0x10]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_331, "%00000533"), Attrs([Attr("address","0x9C4"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R29",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(1_336, "%00000538"), Attrs([Attr("address","0x9C4"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R30",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_340, "%0000053c"), Attrs([Attr("address","0x9C4"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_345, "%00000541"), + Attrs([Attr("address","0x9C8"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_232, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_301, "%000008fd"), Attrs([Attr("alloc-size","()"), +Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("malloc_size",Imm(64)), +Var("R0",Imm(64)), In()), Arg(Tid(2_302, "%000008fe"), + Attrs([Attr("warn-unused","()"), Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_046, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_812, "%00000714"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_819, "%0000071b"), Attrs([Attr("address","0x754"), +Attr("insn","ldr x17, [x16, #0x20]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(32,64)),LittleEndian(),64)), +Def(Tid(1_825, "%00000721"), Attrs([Attr("address","0x758"), +Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_830, "%00000726"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_233, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x710"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_303, "%000008ff"), Attrs([Attr("nonnull","()"), +Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), +Attr("c.type","void restrict *")]), Var("memcpy_dst",Imm(64)), +Var("R0",Imm(64)), Both()), Arg(Tid(2_304, "%00000900"), + Attrs([Attr("nonnull","()"), Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void restrict *")]), + Var("memcpy_src",Imm(64)), Var("R1",Imm(64)), Both()), +Arg(Tid(2_305, "%00000901"), Attrs([Attr("c.layout","[unsigned long : 64]"), +Attr("c.data","Top:u64"), Attr("c.type","unsigned long")]), + Var("memcpy_n",Imm(64)), Var("R2",Imm(64)), In()), +Arg(Tid(2_306, "%00000902"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_144, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_724, "%000006bc"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_731, "%000006c3"), Attrs([Attr("address","0x714"), +Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), +Def(Tid(1_737, "%000006c9"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_742, "%000006ce"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_234, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_307, "%00000903"), Attrs([Attr("nonnull","()"), +Attr("c.layout","*[ : 8]"), Attr("c.data","{} ptr"), +Attr("c.type","void*")]), Var("memset_buf",Imm(64)), Var("R0",Imm(64)), +Both()), Arg(Tid(2_308, "%00000904"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("memset_c",Imm(32)), +LOW(32,Var("R1",Imm(64))), In()), Arg(Tid(2_309, "%00000905"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("memset_n",Imm(64)), Var("R2",Imm(64)), +In()), Arg(Tid(2_310, "%00000906"), Attrs([Attr("c.layout","*[ : 8]"), +Attr("c.data","{} ptr"), Attr("c.type","void*")]), + Var("memset_result",Imm(64)), Var("R0",Imm(64)), Out())]), +Blks([Blk(Tid(1_284, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_834, "%0000072a"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_841, "%00000731"), Attrs([Attr("address","0x764"), +Attr("insn","ldr x17, [x16, #0x28]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(40,64)),LittleEndian(),64)), +Def(Tid(1_847, "%00000737"), Attrs([Attr("address","0x768"), +Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_852, "%0000073c"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_235, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_311, "%00000907"), Attrs([Attr("c.layout","*[char : 8]"), +Attr("c.data","Top:u8 ptr"), Attr("c.type"," const char*")]), + Var("puts_s",Imm(64)), Var("R0",Imm(64)), In()), +Arg(Tid(2_312, "%00000908"), Attrs([Attr("c.layout","[signed : 32]"), +Attr("c.data","Top:u32"), Attr("c.type","signed")]), + Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(1_170, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_900, "%0000076c"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_907, "%00000773"), Attrs([Attr("address","0x794"), +Attr("insn","ldr x17, [x16, #0x40]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(64,64)),LittleEndian(),64)), +Def(Tid(1_913, "%00000779"), Attrs([Attr("address","0x798"), +Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_918, "%0000077e"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_236, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x840")]), + "register_tm_clones", Args([Arg(Tid(2_313, "%00000909"), + Attrs([Attr("c.layout","[signed : 32]"), Attr("c.data","Top:u32"), +Attr("c.type","signed")]), Var("register_tm_clones_result",Imm(32)), +LOW(32,Var("R0",Imm(64))), Out())]), +Blks([Blk(Tid(777, "@register_tm_clones"), Attrs([Attr("address","0x840")]), + Phis([]), Defs([Def(Tid(780, "%0000030c"), Attrs([Attr("address","0x840"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(786, "%00000312"), Attrs([Attr("address","0x844"), +Attr("insn","add x0, x0, #0x78")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(120,64))), Def(Tid(791, "%00000317"), + Attrs([Attr("address","0x848"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(797, "%0000031d"), + Attrs([Attr("address","0x84C"), Attr("insn","add x1, x1, #0x78")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(120,64))), +Def(Tid(804, "%00000324"), Attrs([Attr("address","0x850"), +Attr("insn","sub x1, x1, x0")]), Var("R1",Imm(64)), +PLUS(PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64)))),Int(1,64))), +Def(Tid(810, "%0000032a"), Attrs([Attr("address","0x854"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(817, "%00000331"), Attrs([Attr("address","0x858"), +Attr("insn","add x1, x2, x1, asr #3")]), Var("R1",Imm(64)), +PLUS(Var("R2",Imm(64)),ARSHIFT(Var("R1",Imm(64)),Int(3,3)))), +Def(Tid(823, "%00000337"), Attrs([Attr("address","0x85C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(829, "%0000033d"), Attrs([Attr("address","0x860"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(827, "%0000033b"))), Goto(Tid(2_281, "%000008e9"), Attrs([]), + Int(1,1), Direct(Tid(1_406, "%0000057e")))])), Blk(Tid(1_406, "%0000057e"), + Attrs([Attr("address","0x864")]), Phis([]), +Defs([Def(Tid(1_409, "%00000581"), Attrs([Attr("address","0x864"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_416, "%00000588"), Attrs([Attr("address","0x868"), +Attr("insn","ldr x2, [x2, #0xfe0]")]), Var("R2",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R2",Imm(64)),Int(4064,64)),LittleEndian(),64))]), +Jmps([Goto(Tid(1_421, "%0000058d"), Attrs([Attr("address","0x86C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(827, "%0000033b"))), Goto(Tid(2_282, "%000008ea"), Attrs([]), + Int(1,1), Direct(Tid(1_425, "%00000591")))])), Blk(Tid(827, "%0000033b"), + Attrs([Attr("address","0x878")]), Phis([]), Defs([]), +Jmps([Call(Tid(835, "%00000343"), Attrs([Attr("address","0x878"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_425, "%00000591"), Attrs([Attr("address","0x870")]), Phis([]), +Defs([Def(Tid(1_429, "%00000595"), Attrs([Attr("address","0x870"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_434, "%0000059a"), Attrs([Attr("address","0x874"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_239, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_314, "%0000090a"), Attrs([Attr("nonnull","()"), +Attr("c.layout","*[char : 8]"), Attr("c.data","Top:u8 ptr"), +Attr("c.type"," const char*")]), Var("strlen_s",Imm(64)), Var("R0",Imm(64)), +In()), Arg(Tid(2_315, "%0000090b"), + Attrs([Attr("c.layout","[unsigned long : 64]"), Attr("c.data","Top:u64"), +Attr("c.type","unsigned long")]), Var("strlen_result",Imm(64)), +Var("R0",Imm(64)), Out())]), Blks([Blk(Tid(1_032, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_746, "%000006d2"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_753, "%000006d9"), Attrs([Attr("address","0x724"), +Attr("insn","ldr x17, [x16, #0x8]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R16",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_759, "%000006df"), Attrs([Attr("address","0x728"), +Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_764, "%000006e4"), + Attrs([Attr("address","0x72C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))]))]))) \ No newline at end of file diff --git a/examples/simplified_http_parse_basic/example.bil b/examples/simplified_http_parse_basic/example.bil new file mode 100644 index 000000000..8db8251ec --- /dev/null +++ b/examples/simplified_http_parse_basic/example.bil @@ -0,0 +1,376 @@ +000008c0: program +000008a4: sub __cxa_finalize(__cxa_finalize_result) +000008c1: __cxa_finalize_result :: out u32 = low:32[R0] + +0000057a: +000006fe: R16 := 0x20000 +00000705: R17 := mem[R16 + 0x18, el]:u64 +0000070b: R16 := R16 + 0x18 +00000710: call R17 with noreturn + +000008a5: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +000008c2: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000347: +0000034b: #3 := R31 - 0x20 +00000351: mem := mem with [#3, el]:u64 <- R29 +00000357: mem := mem with [#3 + 8, el]:u64 <- R30 +0000035b: R31 := #3 +00000361: R29 := R31 +00000369: mem := mem with [R31 + 0x10, el]:u64 <- R19 +0000036e: R19 := 0x20000 +00000375: R0 := pad:64[mem[R19 + 0x78]] +0000037b: when 0:0[R0] goto %00000379 +000008a6: goto %00000543 + +00000543: +00000546: R0 := 0x1F000 +0000054d: R0 := mem[R0 + 0xFC8, el]:u64 +00000553: when R0 = 0 goto %00000551 +000008a7: goto %0000056a + +0000056a: +0000056d: R0 := 0x20000 +00000574: R0 := mem[R0 + 0x58, el]:u64 +00000579: R30 := 0x8B0 +0000057c: call @__cxa_finalize with return %00000551 + +00000551: +00000559: R30 := 0x8B4 +0000055b: call @deregister_tm_clones with return %0000055d + +0000055d: +00000560: R0 := 1 +00000568: mem := mem with [R19 + 0x78] <- 7:0[R0] +000008a8: goto %00000379 + +00000379: +00000383: R19 := mem[R31 + 0x10, el]:u64 +0000038a: R29 := mem[R31, el]:u64 +0000038f: R30 := mem[R31 + 8, el]:u64 +00000393: R31 := R31 + 0x20 +00000398: call R30 with noreturn + +000008a9: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +000008c3: __libc_start_main_main :: in u64 = R0 +000008c4: __libc_start_main_arg2 :: in u32 = low:32[R1] +000008c5: __libc_start_main_arg3 :: in out u64 = R2 +000008c6: __libc_start_main_auxv :: in out u64 = R3 +000008c7: __libc_start_main_result :: out u32 = low:32[R0] + +000002a0: +000006e8: R16 := 0x20000 +000006ef: R17 := mem[R16 + 0x10, el]:u64 +000006f5: R16 := R16 + 0x10 +000006fa: call R17 with noreturn + +000008aa: sub _fini(_fini_result) +000008c8: _fini_result :: out u32 = low:32[R0] + +00000020: +00000026: #0 := R31 - 0x10 +0000002c: mem := mem with [#0, el]:u64 <- R29 +00000032: mem := mem with [#0 + 8, el]:u64 <- R30 +00000036: R31 := #0 +0000003c: R29 := R31 +00000043: R29 := mem[R31, el]:u64 +00000048: R30 := mem[R31 + 8, el]:u64 +0000004c: R31 := R31 + 0x10 +00000051: call R30 with noreturn + +000008ab: sub _init(_init_result) +000008c9: _init_result :: out u32 = low:32[R0] + +000007b0: +000007b6: #6 := R31 - 0x10 +000007bc: mem := mem with [#6, el]:u64 <- R29 +000007c2: mem := mem with [#6 + 8, el]:u64 <- R30 +000007c6: R31 := #6 +000007cc: R29 := R31 +000007d1: R30 := 0x6E8 +000007d3: call @call_weak_fn with return %000007d5 + +000007d5: +000007da: R29 := mem[R31, el]:u64 +000007df: R30 := mem[R31 + 8, el]:u64 +000007e3: R31 := R31 + 0x10 +000007e8: call R30 with noreturn + +000008ac: sub _start(_start_result) +000008ca: _start_result :: out u32 = low:32[R0] + +00000261: +00000266: R29 := 0 +0000026b: R30 := 0 +00000271: R5 := R0 +00000278: R1 := mem[R31, el]:u64 +0000027e: R2 := R31 + 8 +00000284: R6 := R31 +00000289: R0 := 0x1F000 +00000290: R0 := mem[R0 + 0xFD8, el]:u64 +00000295: R3 := 0 +0000029a: R4 := 0 +0000029f: R30 := 0x7F0 +000002a2: call @__libc_start_main with return %000002a4 + +000002a4: +000002a7: R30 := 0x7F4 +000002aa: call @abort with return %000008ad + +000008ad: +000008ae: call @call_weak_fn with noreturn + +000008af: sub abort() + + +000002a8: +00000756: R16 := 0x20000 +0000075d: R17 := mem[R16 + 0x38, el]:u64 +00000763: R16 := R16 + 0x38 +00000768: call R17 with noreturn + +000008b0: sub call_weak_fn(call_weak_fn_result) +000008cb: call_weak_fn_result :: out u32 = low:32[R0] + +000002ac: +000002af: R0 := 0x1F000 +000002b6: R0 := mem[R0 + 0xFD0, el]:u64 +000002bc: when R0 = 0 goto %000002ba +000008b1: goto %000005ba + +000002ba: +000002c2: call R30 with noreturn + +000005ba: +000005bd: goto @__gmon_start__ + +000005bb: +00000740: R16 := 0x20000 +00000747: R17 := mem[R16 + 0x30, el]:u64 +0000074d: R16 := R16 + 0x30 +00000752: call R17 with noreturn + +000008b2: sub deregister_tm_clones(deregister_tm_clones_result) +000008cc: deregister_tm_clones_result :: out u32 = low:32[R0] + +000002c8: +000002cb: R0 := 0x20000 +000002d1: R0 := R0 + 0x78 +000002d6: R1 := 0x20000 +000002dc: R1 := R1 + 0x78 +000002e2: #1 := ~R0 +000002e7: #2 := R1 + ~R0 +000002ed: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +000002f3: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +000002f7: ZF := #2 + 1 = 0 +000002fb: NF := 63:63[#2 + 1] +00000301: when ZF goto %000002ff +000008b3: goto %0000059c + +0000059c: +0000059f: R1 := 0x1F000 +000005a6: R1 := mem[R1 + 0xFC0, el]:u64 +000005ab: when R1 = 0 goto %000002ff +000008b4: goto %000005af + +000002ff: +00000307: call R30 with noreturn + +000005af: +000005b3: R16 := R1 +000005b8: call R16 with noreturn + +000008b5: sub frame_dummy(frame_dummy_result) +000008cd: frame_dummy_result :: out u32 = low:32[R0] + +0000039e: +000003a0: call @register_tm_clones with noreturn + +000008b6: sub free(free_ptr) +000008ce: free_ptr :: in out u64 = R0 + +0000051e: +00000782: R16 := 0x20000 +00000789: R17 := mem[R16 + 0x48, el]:u64 +0000078f: R16 := R16 + 0x48 +00000794: call R17 with noreturn + +000008b7: sub main(main_argc, main_argv, main_result) +000008cf: main_argc :: in u32 = low:32[R0] +000008d0: main_argv :: in out u64 = R1 +000008d1: main_result :: out u32 = low:32[R0] + +000003a2: +000003a6: #4 := R31 - 0x30 +000003ac: mem := mem with [#4, el]:u64 <- R29 +000003b2: mem := mem with [#4 + 8, el]:u64 <- R30 +000003b6: R31 := #4 +000003bc: R29 := R31 +000003c4: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000003cb: mem := mem with [R31 + 0x28, el]:u64 <- 0 +000003d2: mem := mem with [R31 + 0x20, el]:u64 <- 0 +000003d7: R0 := 0x20000 +000003dd: R0 := R0 + 0x60 +000003e4: R1 := pad:64[mem[R0]] +000003e9: R0 := 0x20000 +000003ef: R0 := R0 + 0x68 +000003f7: mem := mem with [R0 + 5] <- 7:0[R1] +000003fc: R0 := 0x20000 +00000402: R0 := R0 + 0x68 +00000407: R30 := 0x90C +0000040a: call @strlen with return %0000040c + +0000040c: +00000410: R0 := R0 + 1 +00000415: R30 := 0x914 +00000418: call @malloc with return %0000041a + +0000041a: +0000041e: R1 := R0 +00000423: R0 := 0x20000 +00000429: R0 := R0 + 0x80 +00000431: mem := mem with [R0, el]:u64 <- R1 +00000436: R0 := 0x20000 +0000043c: R0 := R0 + 0x80 +00000443: R19 := mem[R0, el]:u64 +00000448: R0 := 0x20000 +0000044e: R0 := R0 + 0x68 +00000453: R30 := 0x93C +00000455: call @strlen with return %00000457 + +00000457: +0000045b: R0 := R0 + 1 +00000461: R2 := R0 +00000466: R0 := 0x20000 +0000046c: R1 := R0 + 0x68 +00000472: R0 := R19 +00000477: R30 := 0x954 +0000047a: call @memcpy with return %0000047c + +0000047c: +0000047f: R0 := 0x20000 +00000485: R0 := R0 + 0x80 +0000048c: R0 := mem[R0, el]:u64 +00000491: R30 := 0x964 +00000494: call @puts with return %00000496 + +00000496: +00000499: R0 := 0x20000 +0000049f: R0 := R0 + 0x80 +000004a6: R0 := mem[R0, el]:u64 +000004ac: R0 := R0 + 2 +000004b4: mem := mem with [R31 + 0x28, el]:u64 <- R0 +000004bb: R0 := mem[R31 + 0x28, el]:u64 +000004c2: mem := mem with [R0] <- 0 +000004c7: R0 := 0x20000 +000004cd: R0 := R0 + 0x80 +000004d4: R19 := mem[R0, el]:u64 +000004d9: R0 := 0x20000 +000004df: R0 := R0 + 0x80 +000004e6: R0 := mem[R0, el]:u64 +000004eb: R30 := 0x99C +000004ed: call @strlen with return %000004ef + +000004ef: +000004f3: R2 := R0 +000004f8: R1 := 0 +000004fe: R0 := R19 +00000503: R30 := 0x9AC +00000506: call @memset with return %00000508 + +00000508: +0000050b: R0 := 0x20000 +00000511: R0 := R0 + 0x80 +00000518: R0 := mem[R0, el]:u64 +0000051d: R30 := 0x9BC +00000520: call @free with return %00000522 + +00000522: +00000525: R0 := 0 +0000052c: R19 := mem[R31 + 0x10, el]:u64 +00000533: R29 := mem[R31, el]:u64 +00000538: R30 := mem[R31 + 8, el]:u64 +0000053c: R31 := R31 + 0x30 +00000541: call R30 with noreturn + +000008b8: sub malloc(malloc_size, malloc_result) +000008d2: malloc_size :: in u64 = R0 +000008d3: malloc_result :: out u64 = R0 + +00000416: +00000714: R16 := 0x20000 +0000071b: R17 := mem[R16 + 0x20, el]:u64 +00000721: R16 := R16 + 0x20 +00000726: call R17 with noreturn + +000008b9: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +000008d4: memcpy_dst :: in out u64 = R0 +000008d5: memcpy_src :: in out u64 = R1 +000008d6: memcpy_n :: in u64 = R2 +000008d7: memcpy_result :: out u64 = R0 + +00000478: +000006bc: R16 := 0x20000 +000006c3: R17 := mem[R16, el]:u64 +000006c9: R16 := R16 +000006ce: call R17 with noreturn + +000008ba: sub memset(memset_buf, memset_c, memset_n, memset_result) +000008d8: memset_buf :: in out u64 = R0 +000008d9: memset_c :: in u32 = low:32[R1] +000008da: memset_n :: in u64 = R2 +000008db: memset_result :: out u64 = R0 + +00000504: +0000072a: R16 := 0x20000 +00000731: R17 := mem[R16 + 0x28, el]:u64 +00000737: R16 := R16 + 0x28 +0000073c: call R17 with noreturn + +000008bb: sub puts(puts_s, puts_result) +000008dc: puts_s :: in u64 = R0 +000008dd: puts_result :: out u32 = low:32[R0] + +00000492: +0000076c: R16 := 0x20000 +00000773: R17 := mem[R16 + 0x40, el]:u64 +00000779: R16 := R16 + 0x40 +0000077e: call R17 with noreturn + +000008bc: sub register_tm_clones(register_tm_clones_result) +000008de: register_tm_clones_result :: out u32 = low:32[R0] + +00000309: +0000030c: R0 := 0x20000 +00000312: R0 := R0 + 0x78 +00000317: R1 := 0x20000 +0000031d: R1 := R1 + 0x78 +00000324: R1 := R1 + ~R0 + 1 +0000032a: R2 := 0.63:63[R1] +00000331: R1 := R2 + (R1 ~>> 3) +00000337: R1 := extend:64[63:1[R1]] +0000033d: when R1 = 0 goto %0000033b +000008bd: goto %0000057e + +0000057e: +00000581: R2 := 0x1F000 +00000588: R2 := mem[R2 + 0xFE0, el]:u64 +0000058d: when R2 = 0 goto %0000033b +000008be: goto %00000591 + +0000033b: +00000343: call R30 with noreturn + +00000591: +00000595: R16 := R2 +0000059a: call R16 with noreturn + +000008bf: sub strlen(strlen_s, strlen_result) +000008df: strlen_s :: in u64 = R0 +000008e0: strlen_result :: out u64 = R0 + +00000408: +000006d2: R16 := 0x20000 +000006d9: R17 := mem[R16 + 8, el]:u64 +000006df: R16 := R16 + 8 +000006e4: call R17 with noreturn diff --git a/examples/simplified_http_parse_basic/example.relf b/examples/simplified_http_parse_basic/example.relf new file mode 100644 index 000000000..08e9f6ebf --- /dev/null +++ b/examples/simplified_http_parse_basic/example.relf @@ -0,0 +1,143 @@ + +Relocation section '.rela.dyn' at offset 0x528 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 8d0 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 880 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 8d4 +0000000000020058 0000000000000403 R_AARCH64_RELATIVE 20058 +000000000001ffc0 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000a00000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000e00000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x5e8 contains 10 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +0000000000020000 0000000300000402 R_AARCH64_JUMP_SLOT 0000000000000000 memcpy@GLIBC_2.17 + 0 +0000000000020008 0000000400000402 R_AARCH64_JUMP_SLOT 0000000000000000 strlen@GLIBC_2.17 + 0 +0000000000020010 0000000500000402 R_AARCH64_JUMP_SLOT 0000000000000000 __libc_start_main@GLIBC_2.34 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 malloc@GLIBC_2.17 + 0 +0000000000020028 0000000900000402 R_AARCH64_JUMP_SLOT 0000000000000000 memset@GLIBC_2.17 + 0 +0000000000020030 0000000a00000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020038 0000000b00000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 +0000000000020040 0000000c00000402 R_AARCH64_JUMP_SLOT 0000000000000000 puts@GLIBC_2.17 + 0 +0000000000020048 0000000d00000402 R_AARCH64_JUMP_SLOT 0000000000000000 free@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 15 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 3: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 (2) + 4: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 (2) + 5: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 (3) + 6: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 7: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 (2) + 9: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 (2) + 10: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 11: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 12: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2) + 13: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 (2) + 14: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 98 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 0000000000000238 0 SECTION LOCAL DEFAULT 1 .interp + 2: 0000000000000254 0 SECTION LOCAL DEFAULT 2 .note.gnu.build-id + 3: 0000000000000278 0 SECTION LOCAL DEFAULT 3 .note.ABI-tag + 4: 0000000000000298 0 SECTION LOCAL DEFAULT 4 .gnu.hash + 5: 00000000000002b8 0 SECTION LOCAL DEFAULT 5 .dynsym + 6: 0000000000000420 0 SECTION LOCAL DEFAULT 6 .dynstr + 7: 00000000000004d4 0 SECTION LOCAL DEFAULT 7 .gnu.version + 8: 00000000000004f8 0 SECTION LOCAL DEFAULT 8 .gnu.version_r + 9: 0000000000000528 0 SECTION LOCAL DEFAULT 9 .rela.dyn + 10: 00000000000005e8 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 00000000000006d8 0 SECTION LOCAL DEFAULT 11 .init + 12: 00000000000006f0 0 SECTION LOCAL DEFAULT 12 .plt + 13: 00000000000007c0 0 SECTION LOCAL DEFAULT 13 .text + 14: 00000000000009cc 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009e0 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009e4 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 0000000000000a20 0 SECTION LOCAL DEFAULT 17 .eh_frame + 18: 000000000001fdc8 0 SECTION LOCAL DEFAULT 18 .init_array + 19: 000000000001fdd0 0 SECTION LOCAL DEFAULT 19 .fini_array + 20: 000000000001fdd8 0 SECTION LOCAL DEFAULT 20 .dynamic + 21: 000000000001ffb8 0 SECTION LOCAL DEFAULT 21 .got + 22: 000000000001ffe8 0 SECTION LOCAL DEFAULT 22 .got.plt + 23: 0000000000020050 0 SECTION LOCAL DEFAULT 23 .data + 24: 0000000000020078 0 SECTION LOCAL DEFAULT 24 .bss + 25: 0000000000000000 0 SECTION LOCAL DEFAULT 25 .comment + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 27: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 28: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 29: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 0000000000000a34 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009e0 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000007f4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000007f4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 00000000000009cc 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009d8 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000810 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000810 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 0000000000000840 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000880 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020078 1 OBJECT LOCAL DEFAULT 24 completed.0 + 47: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 48: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 49: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 frame_dummy + 50: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 51: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 52: 0000000000000a48 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS example.c + 55: 0000000000020080 0 NOTYPE LOCAL DEFAULT 24 $d + 56: 0000000000020061 0 NOTYPE LOCAL DEFAULT 23 $d + 57: 00000000000008d4 0 NOTYPE LOCAL DEFAULT 13 $x + 58: 0000000000000aa8 0 NOTYPE LOCAL DEFAULT 17 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000acc 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000acc 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009e4 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 66: 00000000000006f0 0 NOTYPE LOCAL DEFAULT 12 $x + 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 68: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 71: 0000000000020050 0 NOTYPE WEAK DEFAULT 23 data_start + 72: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 00000000000009cc 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 78: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 79: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 80: 0000000000020060 1 OBJECT GLOBAL DEFAULT 23 password + 81: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 82: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 83: 0000000000020058 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 84: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 85: 00000000000009e0 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 00000000000007c0 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020080 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020088 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020068 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 0000000000020073 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 00000000000008d4 248 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020078 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 96: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 97: 00000000000006d8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/examples/simplified_http_parse_basic/string-specs.md b/examples/simplified_http_parse_basic/string-specs.md index 826586373..0fdea8641 100644 --- a/examples/simplified_http_parse_basic/string-specs.md +++ b/examples/simplified_http_parse_basic/string-specs.md @@ -63,7 +63,7 @@ procedure strlen(); ensures (bvule64(old(R0), bvadd64(old(R0), R0))); ``` -But **does not** work when we do the address calculation in the load. +But **does not** work when we do the address calculation in the memory access rather than the quantification bound. ```bpl procedure strlen(); From cdf441099ff93991e3be2ff28f9607d537f39dfb Mon Sep 17 00:00:00 2001 From: l-kent Date: Mon, 16 Oct 2023 12:55:18 +1000 Subject: [PATCH 3/3] correct file extension --- examples/simplified_http_parse_basic/{example.bil => example.bir} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename examples/simplified_http_parse_basic/{example.bil => example.bir} (100%) diff --git a/examples/simplified_http_parse_basic/example.bil b/examples/simplified_http_parse_basic/example.bir similarity index 100% rename from examples/simplified_http_parse_basic/example.bil rename to examples/simplified_http_parse_basic/example.bir