diff --git a/examples/memcpy-variants/Makefile b/examples/memcpy-variants/Makefile new file mode 100644 index 000000000..e28025b9e --- /dev/null +++ b/examples/memcpy-variants/Makefile @@ -0,0 +1,28 @@ + +.PHONY=all +.PHONY=result +.PHONY=resultiter + +all: resultiter result + +result: example.bpl extraspec.bpl iterator-spec.bpl + boogie example.bpl extraspec.bpl /mv example.model /smoke /proverLog result.log | tee result + +resultiter: example.bpl extraspec.bpl iterator-spec.bpl + boogie iterator-spec.bpl extraspec.bpl /mv example.model /smoke /vcsSplitOnEveryAssert /proverLog iterator.log | tee resultiter + +a.out: example.c + aarch64-linux-gnu-gcc example.c -fno-builtin-memcpy + +example.adt: a.out + bap-aslp a.out -d adt:example.adt + bap-aslp a.out -d > example.bil + readelf -s -r -W a.out > example.relf + +example.bpl: example.adt example.spec + java -jar ../../target/scala-3.3.1/wptool-boogie-assembly-0.0.1.jar --adt example.adt --relf example.relf -o example.bpl --spec example.spec --boogie-use-lambda-stores --dump-il example.il + + +iterator-spec.bpl: example.adt memcpyspec-iterindex.spec + java -jar ../../target/scala-3.3.1/wptool-boogie-assembly-0.0.1.jar --adt example.adt --relf example.relf -o iterator-spec.bpl --spec memcpyspec-iterindex.spec --boogie-use-lambda-stores + diff --git a/examples/memcpy-variants/example.adt b/examples/memcpy-variants/example.adt new file mode 100644 index 000000000..095c4eee7 --- /dev/null +++ b/examples/memcpy-variants/example.adt @@ -0,0 +1,550 @@ +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 1920 20 1920)\n(code-region 1600 320 1600)\n(code-region 1488 112 1488)\n(code-region 1464 24 1464)\n(code-start 1652)\n(code-start 1600)\n(code-start 1876)\n(entry-point 1600)\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 __libc_start_main)\n(external-reference 131088 __cxa_finalize)\n(external-reference 131096 __gmon_start__)\n(external-reference 131104 abort)\n(format elf)\n(is-executable true)\n(is-little-endian true)\n(llvm:base-address 0)\n(llvm:code-entry abort 0 0)\n(llvm:code-entry __cxa_finalize 0 0)\n(llvm:code-entry __libc_start_main 0 0)\n(llvm:code-entry memcpy 0 0)\n(llvm:code-entry _init 1464 0)\n(llvm:code-entry main 1876 44)\n(llvm:code-entry _start 1600 52)\n(llvm:code-entry abort@GLIBC_2.17 0 0)\n(llvm:code-entry _fini 1920 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 memcpy@GLIBC_2.17 0 0)\n(llvm:code-entry frame_dummy 1872 0)\n(llvm:code-entry __do_global_dtors_aux 1792 0)\n(llvm:code-entry register_tm_clones 1728 0)\n(llvm:code-entry deregister_tm_clones 1680 0)\n(llvm:code-entry call_weak_fn 1652 20)\n(llvm:code-entry .fini 1920 20)\n(llvm:code-entry .text 1600 320)\n(llvm:code-entry .plt 1488 112)\n(llvm:code-entry .init 1464 24)\n(llvm:elf-program-header 08 64968 568)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 1944 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 638)\n(llvm:elf-program-header 02 0 2180)\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 1944 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 664)\n(llvm:elf-virtual-program-header 02 0 2180)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 1600)\n(llvm:name-reference 131104 abort)\n(llvm:name-reference 131096 __gmon_start__)\n(llvm:name-reference 131088 __cxa_finalize)\n(llvm:name-reference 131080 __libc_start_main)\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 68420)\n(llvm:section-entry .strtab 0 572 67848)\n(llvm:section-entry .symtab 0 2208 65640)\n(llvm:section-entry .comment 0 30 65606)\n(llvm:section-entry .bss 131144 24 65606)\n(llvm:section-entry .data 131112 30 65576)\n(llvm:section-entry .got.plt 131048 64 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 2008 172 2008)\n(llvm:section-entry .eh_frame_hdr 1944 60 1944)\n(llvm:section-entry .rodata 1940 4 1940)\n(llvm:section-entry .fini 1920 20 1920)\n(llvm:section-entry .text 1600 320 1600)\n(llvm:section-entry .plt 1488 112 1488)\n(llvm:section-entry .init 1464 24 1464)\n(llvm:section-entry .rela.plt 1344 120 1344)\n(llvm:section-entry .rela.dyn 1152 192 1152)\n(llvm:section-entry .gnu.version_r 1104 48 1104)\n(llvm:section-entry .gnu.version 1084 20 1084)\n(llvm:section-entry .dynstr 936 148 936)\n(llvm:section-entry .dynsym 696 240 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 abort 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 memcpy 0 0 0 0)\n(llvm:symbol-entry _init 1464 0 1464 1464)\n(llvm:symbol-entry main 1876 44 1876 1876)\n(llvm:symbol-entry _start 1600 52 1600 1600)\n(llvm:symbol-entry abort@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry _fini 1920 0 1920 1920)\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 memcpy@GLIBC_2.17 0 0 0 0)\n(llvm:symbol-entry frame_dummy 1872 0 1872 1872)\n(llvm:symbol-entry __do_global_dtors_aux 1792 0 1792 1792)\n(llvm:symbol-entry register_tm_clones 1728 0 1728 1728)\n(llvm:symbol-entry deregister_tm_clones 1680 0 1680 1680)\n(llvm:symbol-entry call_weak_fn 1652 20 1652 1652)\n(mapped 0 2180 0)\n(mapped 130504 638 64968)\n(named-region 0 2180 02)\n(named-region 130504 664 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 240 .dynsym)\n(named-region 936 148 .dynstr)\n(named-region 1084 20 .gnu.version)\n(named-region 1104 48 .gnu.version_r)\n(named-region 1152 192 .rela.dyn)\n(named-region 1344 120 .rela.plt)\n(named-region 1464 24 .init)\n(named-region 1488 112 .plt)\n(named-region 1600 320 .text)\n(named-region 1920 20 .fini)\n(named-region 1940 4 .rodata)\n(named-region 1944 60 .eh_frame_hdr)\n(named-region 2008 172 .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 64 .got.plt)\n(named-region 131112 30 .data)\n(named-region 131144 24 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2208 .symtab)\n(named-region 0 572 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 1652 call_weak_fn)\n(named-symbol 1680 deregister_tm_clones)\n(named-symbol 1728 register_tm_clones)\n(named-symbol 1792 __do_global_dtors_aux)\n(named-symbol 1872 frame_dummy)\n(named-symbol 0 memcpy@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 1920 _fini)\n(named-symbol 0 abort@GLIBC_2.17)\n(named-symbol 1600 _start)\n(named-symbol 1876 main)\n(named-symbol 1464 _init)\n(named-symbol 0 memcpy)\n(named-symbol 0 __libc_start_main)\n(named-symbol 0 __cxa_finalize)\n(named-symbol 0 abort)\n(require libc.so.6)\n(section 568 27)\n(section 596 36)\n(section 632 32)\n(section 664 28)\n(section 696 240)\n(section 936 148)\n(section 1084 20)\n(section 1104 48)\n(section 1152 192)\n(section 1344 120)\n(section 1464 24)\n(section 1488 112)\n(section 1600 320)\n(section 1920 20)\n(section 1940 4)\n(section 1944 60)\n(section 2008 172)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 64)\n(section 131112 30)\n(section 131144 24)\n(section 0 30)\n(section 0 2208)\n(section 0 572)\n(section 0 259)\n(segment 0 2180 true false true)\n(segment 130504 664 true true false)\n(subarch v8)\n(symbol-chunk 1652 20 1652)\n(symbol-chunk 1600 52 1600)\n(symbol-chunk 1876 44 1876)\n(symbol-value 1652 1652)\n(symbol-value 1680 1680)\n(symbol-value 1728 1728)\n(symbol-value 1792 1792)\n(symbol-value 1872 1872)\n(symbol-value 1920 1920)\n(symbol-value 1600 1600)\n(symbol-value 1876 1876)\n(symbol-value 1464 1464)\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\x40\x06\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x48\x0c\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\x84\x08\x00\x00\x00\x00\x00\x00\x84\x08\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\x40\x06\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x48\x0c\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\x84\x08\x00\x00\x00\x00\x00\x00\x84\x08\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\x7e\x02\x00\x00\x00\x00\x00\x00\x98\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\x98\x07\x00\x00\x00\x00\x00\x00\x98\x07\x00\x00\x00\x00\x00\x00\x98\x07\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"), +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\x40\x06\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\xf1\x8c\xa3\xf6\xb1\xfe\xee\xf6\xb7\x78\x64\x40\xa4\x0d\xb0\x7c\x6f\x0d\x9d\xb9"), +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\xb8\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x17\x00\x28\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x22\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\x4f\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x13\x00\x00\x00\x22\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x6b\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x29\x00\x00\x00\x12\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x7a\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", 0x3A8, "\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\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", 0x43C, "\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00\x01\x00\x02\x00\x01\x00\x02\x00\x01\x00"), +Section(".gnu.version_r", 0x450, "\x01\x00\x02\x00\x2f\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xb4\x91\x96\x06\x00\x00\x03\x00\x39\x00\x00\x00\x10\x00\x00\x00\x97\x91\x96\x06\x00\x00\x02\x00\x44\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.dyn", 0x480, "\xc8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x50\x07\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x54\x07\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\xc0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xc8\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xd0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe0\xff\x01\x00\x00\x00\x00\x00\x01\x04\x00\x00\x09\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".rela.plt", 0x540, "\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\x06\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"), +Section(".init", 0x5B8, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x2c\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x5D0, "\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"), +Section(".text", 0x640, "\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\xe5\xff\xff\x97\xf0\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xe8\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\x20\x01\x91\x01\x01\x00\x90\x21\x20\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\x20\x01\x91\x01\x01\x00\x90\x21\x20\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\x22\x41\x39\x40\x01\x00\x37\xe0\x00\x00\xf0\x00\xe4\x47\xf9\x80\x00\x00\xb4\x00\x01\x00\x90\x00\x18\x40\xf9\xb9\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\x22\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\xbf\xa9\xfd\x03\x00\x91\xc2\x01\x80\xd2\x00\x01\x00\x90\x01\xe0\x00\x91\x00\x01\x00\x90\x00\x40\x01\x91\xa0\xff\xff\x97\x00\x00\x80\x52\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".fini", 0x780, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x794, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x798, "\x01\x1b\x03\x3b\x3c\x00\x00\x00\x06\x00\x00\x00\xa8\xfe\xff\xff\x54\x00\x00\x00\xf8\xfe\xff\xff\x68\x00\x00\x00\x28\xff\xff\xff\x7c\x00\x00\x00\x68\xff\xff\xff\x90\x00\x00\x00\xb8\xff\xff\xff\xb4\x00\x00\x00\xbc\xff\xff\xff\xc8\x00\x00\x00"), +Section(".eh_frame", 0x7D8, "\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\x4c\xfe\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x88\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\xa4\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\xd0\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\xfc\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x8c\x00\x00\x00\xec\xfe\xff\xff\x2c\x00\x00\x00\x00\x41\x0e\x10\x9d\x02\x9e\x01\x49\xde\xdd\x0e\x00\x00\x00\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x00\x07\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDD8, "\x01\x00\x00\x00\x00\x00\x00\x00\x2f\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\xb8\x05\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x80\x07\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\xa8\x03\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\x94\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\x78\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\x40\x05\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x80\x04\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\x50\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\x3c\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, "\x50\x07\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\x54\x07\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\xd0\x05\x00\x00\x00\x00\x00\x00\xd0\x05\x00\x00\x00\x00\x00\x00\xd0\x05\x00\x00\x00\x00\x00\x00\xd0\x05\x00\x00\x00\x00\x00\x00\xd0\x05\x00\x00\x00\x00\x00\x00"), +Section(".data", 0x20028, "\x00\x00\x00\x00\x00\x00\x00\x00\x30\x00\x02\x00\x00\x00\x00\x00\x42\x41\x53\x49\x4c\x20\x56\x65\x72\x69\x66\x69\x65\x72")]), +Memmap([Annotation(Region(0x0,0x883), Attr("segment","02 0 2180")), +Annotation(Region(0x640,0x673), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x23B), Attr("section","\".strtab\"")), +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,0x3A7), Attr("section","\".dynsym\"")), +Annotation(Region(0x3A8,0x43B), Attr("section","\".dynstr\"")), +Annotation(Region(0x43C,0x44F), Attr("section","\".gnu.version\"")), +Annotation(Region(0x450,0x47F), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x480,0x53F), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x540,0x5B7), Attr("section","\".rela.plt\"")), +Annotation(Region(0x5B8,0x5CF), Attr("section","\".init\"")), +Annotation(Region(0x5D0,0x63F), Attr("section","\".plt\"")), +Annotation(Region(0x5B8,0x5CF), Attr("code-region","()")), +Annotation(Region(0x5D0,0x63F), Attr("code-region","()")), +Annotation(Region(0x640,0x673), Attr("symbol-info","_start 0x640 52")), +Annotation(Region(0x674,0x687), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x674,0x687), Attr("symbol-info","call_weak_fn 0x674 20")), +Annotation(Region(0x640,0x77F), Attr("section","\".text\"")), +Annotation(Region(0x640,0x77F), Attr("code-region","()")), +Annotation(Region(0x754,0x77F), Attr("symbol","\"main\"")), +Annotation(Region(0x754,0x77F), Attr("symbol-info","main 0x754 44")), +Annotation(Region(0x780,0x793), Attr("section","\".fini\"")), +Annotation(Region(0x780,0x793), Attr("code-region","()")), +Annotation(Region(0x794,0x797), Attr("section","\".rodata\"")), +Annotation(Region(0x798,0x7D3), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x7D8,0x883), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x20045), Attr("segment","03 0x1FDC8 664")), +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,0x20027), Attr("section","\".got.plt\"")), +Annotation(Region(0x20028,0x20045), Attr("section","\".data\""))]), +Program(Tid(1_561, "%00000619"), Attrs([]), + Subs([Sub(Tid(1_506, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x610"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(1_562, "%0000061a"), + 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(870, "@__cxa_finalize"), + Attrs([Attr("address","0x610")]), Phis([]), +Defs([Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x610"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_163, "%0000048b"), Attrs([Attr("address","0x614"), +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_169, "%00000491"), Attrs([Attr("address","0x618"), +Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_174, "%00000496"), + Attrs([Attr("address","0x61C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(1_507, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x700")]), + "__do_global_dtors_aux", Args([Arg(Tid(1_563, "%0000061b"), + 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(635, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x700")]), Phis([]), Defs([Def(Tid(639, "%0000027f"), + Attrs([Attr("address","0x700"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(645, "%00000285"), Attrs([Attr("address","0x700"), +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(651, "%0000028b"), Attrs([Attr("address","0x700"), +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(655, "%0000028f"), Attrs([Attr("address","0x700"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(661, "%00000295"), + Attrs([Attr("address","0x704"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(669, "%0000029d"), + Attrs([Attr("address","0x708"), 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(674, "%000002a2"), Attrs([Attr("address","0x70C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(681, "%000002a9"), Attrs([Attr("address","0x710"), +Attr("insn","ldrb w0, [x19, #0x48]")]), Var("R0",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(72,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(687, "%000002af"), Attrs([Attr("address","0x714"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(685, "%000002ad"))), +Goto(Tid(1_551, "%0000060f"), Attrs([]), Int(1,1), +Direct(Tid(815, "%0000032f")))])), Blk(Tid(815, "%0000032f"), + Attrs([Attr("address","0x718")]), Phis([]), Defs([Def(Tid(818, "%00000332"), + Attrs([Attr("address","0x718"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(825, "%00000339"), + Attrs([Attr("address","0x71C"), 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(831, "%0000033f"), Attrs([Attr("address","0x720"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(829, "%0000033d"))), Goto(Tid(1_552, "%00000610"), Attrs([]), + Int(1,1), Direct(Tid(854, "%00000356")))])), Blk(Tid(854, "%00000356"), + Attrs([Attr("address","0x724")]), Phis([]), Defs([Def(Tid(857, "%00000359"), + Attrs([Attr("address","0x724"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(864, "%00000360"), + Attrs([Attr("address","0x728"), Attr("insn","ldr x0, [x0, #0x30]")]), + Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(48,64)),LittleEndian(),64)), +Def(Tid(869, "%00000365"), Attrs([Attr("address","0x72C"), +Attr("insn","bl #-0x11c")]), Var("R30",Imm(64)), Int(1840,64))]), +Jmps([Call(Tid(872, "%00000368"), Attrs([Attr("address","0x72C"), +Attr("insn","bl #-0x11c")]), Int(1,1), +(Direct(Tid(1_506, "@__cxa_finalize")),Direct(Tid(829, "%0000033d"))))])), +Blk(Tid(829, "%0000033d"), Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(837, "%00000345"), Attrs([Attr("address","0x730"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(1844,64))]), +Jmps([Call(Tid(839, "%00000347"), Attrs([Attr("address","0x730"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(1_520, "@deregister_tm_clones")),Direct(Tid(841, "%00000349"))))])), +Blk(Tid(841, "%00000349"), Attrs([Attr("address","0x734")]), Phis([]), +Defs([Def(Tid(844, "%0000034c"), Attrs([Attr("address","0x734"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(852, "%00000354"), Attrs([Attr("address","0x738"), +Attr("insn","strb w0, [x19, #0x48]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(72,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(1_553, "%00000611"), Attrs([]), Int(1,1), +Direct(Tid(685, "%000002ad")))])), Blk(Tid(685, "%000002ad"), + Attrs([Attr("address","0x73C")]), Phis([]), Defs([Def(Tid(695, "%000002b7"), + Attrs([Attr("address","0x73C"), 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(702, "%000002be"), Attrs([Attr("address","0x740"), +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(707, "%000002c3"), Attrs([Attr("address","0x740"), +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(711, "%000002c7"), Attrs([Attr("address","0x740"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(716, "%000002cc"), + Attrs([Attr("address","0x744"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_511, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("address","0x600"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(1_564, "%0000061c"), + 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(1_565, "%0000061d"), 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(1_566, "%0000061e"), 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(1_567, "%0000061f"), 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(1_568, "%00000620"), 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(468, "@__libc_start_main"), + Attrs([Attr("address","0x600")]), Phis([]), +Defs([Def(Tid(1_134, "%0000046e"), Attrs([Attr("address","0x600"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_141, "%00000475"), Attrs([Attr("address","0x604"), +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_147, "%0000047b"), Attrs([Attr("address","0x608"), +Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_152, "%00000480"), + Attrs([Attr("address","0x60C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_512, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x780")]), + "_fini", Args([Arg(Tid(1_569, "%00000621"), + 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","0x780")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x784"), +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","0x784"), +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","0x784"), +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","0x784"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x788"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x78C"), +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","0x78C"), +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","0x78C"), +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","0x790"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_513, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x5B8")]), + "_init", Args([Arg(Tid(1_570, "%00000622"), + 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_333, "@_init"), + Attrs([Attr("address","0x5B8")]), Phis([]), +Defs([Def(Tid(1_339, "%0000053b"), Attrs([Attr("address","0x5BC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#6",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_345, "%00000541"), Attrs([Attr("address","0x5BC"), +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_351, "%00000547"), Attrs([Attr("address","0x5BC"), +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_355, "%0000054b"), Attrs([Attr("address","0x5BC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#6",Imm(64))), Def(Tid(1_361, "%00000551"), + Attrs([Attr("address","0x5C0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_366, "%00000556"), + Attrs([Attr("address","0x5C4"), Attr("insn","bl #0xb0")]), + Var("R30",Imm(64)), Int(1480,64))]), Jmps([Call(Tid(1_368, "%00000558"), + Attrs([Attr("address","0x5C4"), Attr("insn","bl #0xb0")]), Int(1,1), +(Direct(Tid(1_518, "@call_weak_fn")),Direct(Tid(1_370, "%0000055a"))))])), +Blk(Tid(1_370, "%0000055a"), Attrs([Attr("address","0x5C8")]), Phis([]), +Defs([Def(Tid(1_375, "%0000055f"), Attrs([Attr("address","0x5C8"), +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(1_380, "%00000564"), Attrs([Attr("address","0x5C8"), +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(1_384, "%00000568"), Attrs([Attr("address","0x5C8"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_389, "%0000056d"), + Attrs([Attr("address","0x5CC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_514, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x640"), +Attr("stub","()"), Attr("entry-point","()")]), "_start", + Args([Arg(Tid(1_571, "%00000623"), 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(405, "@_start"), Attrs([Attr("address","0x640")]), Phis([]), +Defs([Def(Tid(410, "%0000019a"), Attrs([Attr("address","0x644"), +Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), +Def(Tid(415, "%0000019f"), Attrs([Attr("address","0x648"), +Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), +Def(Tid(421, "%000001a5"), Attrs([Attr("address","0x64C"), +Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), +Def(Tid(428, "%000001ac"), Attrs([Attr("address","0x650"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(434, "%000001b2"), Attrs([Attr("address","0x654"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(440, "%000001b8"), + Attrs([Attr("address","0x658"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(445, "%000001bd"), + Attrs([Attr("address","0x65C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(452, "%000001c4"), + Attrs([Attr("address","0x660"), 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(457, "%000001c9"), Attrs([Attr("address","0x664"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(462, "%000001ce"), Attrs([Attr("address","0x668"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(467, "%000001d3"), Attrs([Attr("address","0x66C"), +Attr("insn","bl #-0x6c")]), Var("R30",Imm(64)), Int(1648,64))]), +Jmps([Call(Tid(470, "%000001d6"), Attrs([Attr("address","0x66C"), +Attr("insn","bl #-0x6c")]), Int(1,1), +(Direct(Tid(1_511, "@__libc_start_main")),Direct(Tid(472, "%000001d8"))))])), +Blk(Tid(472, "%000001d8"), Attrs([Attr("address","0x670")]), Phis([]), +Defs([Def(Tid(475, "%000001db"), Attrs([Attr("address","0x670"), +Attr("insn","bl #-0x40")]), Var("R30",Imm(64)), Int(1652,64))]), +Jmps([Call(Tid(478, "%000001de"), Attrs([Attr("address","0x670"), +Attr("insn","bl #-0x40")]), Int(1,1), +(Direct(Tid(1_517, "@abort")),Direct(Tid(1_554, "%00000612"))))])), +Blk(Tid(1_554, "%00000612"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(1_555, "%00000613"), Attrs([]), Int(1,1), +(Direct(Tid(1_518, "@call_weak_fn")),))]))])), Sub(Tid(1_517, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x630"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(476, "@abort"), Attrs([Attr("address","0x630")]), Phis([]), +Defs([Def(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x630"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_207, "%000004b7"), Attrs([Attr("address","0x634"), +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_213, "%000004bd"), Attrs([Attr("address","0x638"), +Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_218, "%000004c2"), + Attrs([Attr("address","0x63C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(1_518, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x674")]), + "call_weak_fn", Args([Arg(Tid(1_572, "%00000624"), + 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(480, "@call_weak_fn"), + Attrs([Attr("address","0x674")]), Phis([]), Defs([Def(Tid(483, "%000001e3"), + Attrs([Attr("address","0x674"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(490, "%000001ea"), + Attrs([Attr("address","0x678"), 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(496, "%000001f0"), Attrs([Attr("address","0x67C"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(494, "%000001ee"))), Goto(Tid(1_556, "%00000614"), Attrs([]), + Int(1,1), Direct(Tid(934, "%000003a6")))])), Blk(Tid(494, "%000001ee"), + Attrs([Attr("address","0x684")]), Phis([]), Defs([]), +Jmps([Call(Tid(502, "%000001f6"), Attrs([Attr("address","0x684"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(934, "%000003a6"), Attrs([Attr("address","0x680")]), Phis([]), +Defs([]), Jmps([Goto(Tid(937, "%000003a9"), Attrs([Attr("address","0x680"), +Attr("insn","b #-0x60")]), Int(1,1), Direct(Tid(935, "@__gmon_start__")))])), +Blk(Tid(935, "@__gmon_start__"), Attrs([Attr("address","0x620")]), Phis([]), +Defs([Def(Tid(1_178, "%0000049a"), Attrs([Attr("address","0x620"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_185, "%000004a1"), Attrs([Attr("address","0x624"), +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_191, "%000004a7"), Attrs([Attr("address","0x628"), +Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_196, "%000004ac"), + Attrs([Attr("address","0x62C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(1_520, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x690")]), + "deregister_tm_clones", Args([Arg(Tid(1_573, "%00000625"), + 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(508, "@deregister_tm_clones"), + Attrs([Attr("address","0x690")]), Phis([]), Defs([Def(Tid(511, "%000001ff"), + Attrs([Attr("address","0x690"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(517, "%00000205"), + Attrs([Attr("address","0x694"), Attr("insn","add x0, x0, #0x48")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(72,64))), +Def(Tid(522, "%0000020a"), Attrs([Attr("address","0x698"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(528, "%00000210"), Attrs([Attr("address","0x69C"), +Attr("insn","add x1, x1, #0x48")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(72,64))), Def(Tid(534, "%00000216"), + Attrs([Attr("address","0x6A0"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(539, "%0000021b"), + Attrs([Attr("address","0x6A0"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(545, "%00000221"), Attrs([Attr("address","0x6A0"), +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(551, "%00000227"), Attrs([Attr("address","0x6A0"), +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(555, "%0000022b"), Attrs([Attr("address","0x6A0"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(559, "%0000022f"), + Attrs([Attr("address","0x6A0"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(565, "%00000235"), Attrs([Attr("address","0x6A4"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(563, "%00000233"))), Goto(Tid(1_557, "%00000615"), Attrs([]), + Int(1,1), Direct(Tid(904, "%00000388")))])), Blk(Tid(904, "%00000388"), + Attrs([Attr("address","0x6A8")]), Phis([]), Defs([Def(Tid(907, "%0000038b"), + Attrs([Attr("address","0x6A8"), Attr("insn","adrp x1, #0x1f000")]), + Var("R1",Imm(64)), Int(126976,64)), Def(Tid(914, "%00000392"), + Attrs([Attr("address","0x6AC"), 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(919, "%00000397"), Attrs([Attr("address","0x6B0"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(563, "%00000233"))), Goto(Tid(1_558, "%00000616"), Attrs([]), + Int(1,1), Direct(Tid(923, "%0000039b")))])), Blk(Tid(563, "%00000233"), + Attrs([Attr("address","0x6BC")]), Phis([]), Defs([]), +Jmps([Call(Tid(571, "%0000023b"), Attrs([Attr("address","0x6BC"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(923, "%0000039b"), Attrs([Attr("address","0x6B4")]), Phis([]), +Defs([Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x6B4"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(932, "%000003a4"), Attrs([Attr("address","0x6B8"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(1_523, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x750")]), "frame_dummy", Args([Arg(Tid(1_574, "%00000626"), + 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(722, "@frame_dummy"), + Attrs([Attr("address","0x750")]), Phis([]), Defs([]), +Jmps([Call(Tid(724, "%000002d4"), Attrs([Attr("address","0x750"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(1_526, "@register_tm_clones")),))]))])), Sub(Tid(1_524, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x754")]), "main", Args([Arg(Tid(1_575, "%00000627"), + 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(1_576, "%00000628"), + 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(1_577, "%00000629"), + 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(726, "@main"), + Attrs([Attr("address","0x754")]), Phis([]), Defs([Def(Tid(730, "%000002da"), + Attrs([Attr("address","0x754"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(736, "%000002e0"), Attrs([Attr("address","0x754"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#4",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(742, "%000002e6"), Attrs([Attr("address","0x754"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), 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(746, "%000002ea"), Attrs([Attr("address","0x754"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#4",Imm(64))), Def(Tid(752, "%000002f0"), + Attrs([Attr("address","0x758"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(757, "%000002f5"), + Attrs([Attr("address","0x75C"), Attr("insn","mov x2, #0xe")]), + Var("R2",Imm(64)), Int(14,64)), Def(Tid(762, "%000002fa"), + Attrs([Attr("address","0x760"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(768, "%00000300"), + Attrs([Attr("address","0x764"), Attr("insn","add x1, x0, #0x38")]), + Var("R1",Imm(64)), PLUS(Var("R0",Imm(64)),Int(56,64))), +Def(Tid(773, "%00000305"), Attrs([Attr("address","0x768"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(779, "%0000030b"), Attrs([Attr("address","0x76C"), +Attr("insn","add x0, x0, #0x50")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(80,64))), Def(Tid(784, "%00000310"), + Attrs([Attr("address","0x770"), Attr("insn","bl #-0x180")]), + Var("R30",Imm(64)), Int(1908,64))]), Jmps([Call(Tid(787, "%00000313"), + Attrs([Attr("address","0x770"), Attr("insn","bl #-0x180")]), Int(1,1), +(Direct(Tid(1_525, "@memcpy")),Direct(Tid(789, "%00000315"))))])), +Blk(Tid(789, "%00000315"), Attrs([Attr("address","0x774")]), Phis([]), +Defs([Def(Tid(792, "%00000318"), Attrs([Attr("address","0x774"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(799, "%0000031f"), Attrs([Attr("address","0x778"), +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(804, "%00000324"), Attrs([Attr("address","0x778"), +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(808, "%00000328"), Attrs([Attr("address","0x778"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(813, "%0000032d"), + Attrs([Attr("address","0x77C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(1_525, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x5F0"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(1_578, "%0000062a"), 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(1_579, "%0000062b"), + 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(1_580, "%0000062c"), 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(1_581, "%0000062d"), 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(785, "@memcpy"), Attrs([Attr("address","0x5F0")]), Phis([]), +Defs([Def(Tid(1_112, "%00000458"), Attrs([Attr("address","0x5F0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x5F4"), +Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), +Def(Tid(1_125, "%00000465"), Attrs([Attr("address","0x5F8"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_130, "%0000046a"), + Attrs([Attr("address","0x5FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(1_526, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6C0")]), + "register_tm_clones", Args([Arg(Tid(1_582, "%0000062e"), + 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(573, "@register_tm_clones"), Attrs([Attr("address","0x6C0")]), + Phis([]), Defs([Def(Tid(576, "%00000240"), Attrs([Attr("address","0x6C0"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(582, "%00000246"), Attrs([Attr("address","0x6C4"), +Attr("insn","add x0, x0, #0x48")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(72,64))), Def(Tid(587, "%0000024b"), + Attrs([Attr("address","0x6C8"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(593, "%00000251"), + Attrs([Attr("address","0x6CC"), Attr("insn","add x1, x1, #0x48")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(72,64))), +Def(Tid(600, "%00000258"), Attrs([Attr("address","0x6D0"), +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(606, "%0000025e"), Attrs([Attr("address","0x6D4"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(613, "%00000265"), Attrs([Attr("address","0x6D8"), +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(619, "%0000026b"), Attrs([Attr("address","0x6DC"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(625, "%00000271"), Attrs([Attr("address","0x6E0"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(623, "%0000026f"))), Goto(Tid(1_559, "%00000617"), Attrs([]), + Int(1,1), Direct(Tid(874, "%0000036a")))])), Blk(Tid(874, "%0000036a"), + Attrs([Attr("address","0x6E4")]), Phis([]), Defs([Def(Tid(877, "%0000036d"), + Attrs([Attr("address","0x6E4"), Attr("insn","adrp x2, #0x1f000")]), + Var("R2",Imm(64)), Int(126976,64)), Def(Tid(884, "%00000374"), + Attrs([Attr("address","0x6E8"), 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(889, "%00000379"), Attrs([Attr("address","0x6EC"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(623, "%0000026f"))), Goto(Tid(1_560, "%00000618"), Attrs([]), + Int(1,1), Direct(Tid(893, "%0000037d")))])), Blk(Tid(623, "%0000026f"), + Attrs([Attr("address","0x6F8")]), Phis([]), Defs([]), +Jmps([Call(Tid(631, "%00000277"), Attrs([Attr("address","0x6F8"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(893, "%0000037d"), Attrs([Attr("address","0x6F0")]), Phis([]), +Defs([Def(Tid(897, "%00000381"), Attrs([Attr("address","0x6F0"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(902, "%00000386"), Attrs([Attr("address","0x6F4"), +Attr("insn","br x16")]), Int(1,1), +(Indirect(Var("R16",Imm(64))),))]))]))]))) \ No newline at end of file diff --git a/examples/memcpy-variants/example.bil b/examples/memcpy-variants/example.bil new file mode 100644 index 000000000..07c5520a1 --- /dev/null +++ b/examples/memcpy-variants/example.bil @@ -0,0 +1,253 @@ +00000619: program +000005e2: sub __cxa_finalize(__cxa_finalize_result) +0000061a: __cxa_finalize_result :: out u32 = low:32[R0] + +00000366: +00000484: R16 := 0x20000 +0000048b: R17 := mem[R16 + 0x10, el]:u64 +00000491: R16 := R16 + 0x10 +00000496: call R17 with noreturn + +000005e3: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000061b: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000027b: +0000027f: #3 := R31 - 0x20 +00000285: mem := mem with [#3, el]:u64 <- R29 +0000028b: mem := mem with [#3 + 8, el]:u64 <- R30 +0000028f: R31 := #3 +00000295: R29 := R31 +0000029d: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000002a2: R19 := 0x20000 +000002a9: R0 := pad:64[mem[R19 + 0x48]] +000002af: when 0:0[R0] goto %000002ad +0000060f: goto %0000032f + +0000032f: +00000332: R0 := 0x1F000 +00000339: R0 := mem[R0 + 0xFC8, el]:u64 +0000033f: when R0 = 0 goto %0000033d +00000610: goto %00000356 + +00000356: +00000359: R0 := 0x20000 +00000360: R0 := mem[R0 + 0x30, el]:u64 +00000365: R30 := 0x730 +00000368: call @__cxa_finalize with return %0000033d + +0000033d: +00000345: R30 := 0x734 +00000347: call @deregister_tm_clones with return %00000349 + +00000349: +0000034c: R0 := 1 +00000354: mem := mem with [R19 + 0x48] <- 7:0[R0] +00000611: goto %000002ad + +000002ad: +000002b7: R19 := mem[R31 + 0x10, el]:u64 +000002be: R29 := mem[R31, el]:u64 +000002c3: R30 := mem[R31 + 8, el]:u64 +000002c7: R31 := R31 + 0x20 +000002cc: call R30 with noreturn + +000005e7: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +0000061c: __libc_start_main_main :: in u64 = R0 +0000061d: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000061e: __libc_start_main_arg3 :: in out u64 = R2 +0000061f: __libc_start_main_auxv :: in out u64 = R3 +00000620: __libc_start_main_result :: out u32 = low:32[R0] + +000001d4: +0000046e: R16 := 0x20000 +00000475: R17 := mem[R16 + 8, el]:u64 +0000047b: R16 := R16 + 8 +00000480: call R17 with noreturn + +000005e8: sub _fini(_fini_result) +00000621: _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 + +000005e9: sub _init(_init_result) +00000622: _init_result :: out u32 = low:32[R0] + +00000535: +0000053b: #6 := R31 - 0x10 +00000541: mem := mem with [#6, el]:u64 <- R29 +00000547: mem := mem with [#6 + 8, el]:u64 <- R30 +0000054b: R31 := #6 +00000551: R29 := R31 +00000556: R30 := 0x5C8 +00000558: call @call_weak_fn with return %0000055a + +0000055a: +0000055f: R29 := mem[R31, el]:u64 +00000564: R30 := mem[R31 + 8, el]:u64 +00000568: R31 := R31 + 0x10 +0000056d: call R30 with noreturn + +000005ea: sub _start(_start_result) +00000623: _start_result :: out u32 = low:32[R0] + +00000195: +0000019a: R29 := 0 +0000019f: R30 := 0 +000001a5: R5 := R0 +000001ac: R1 := mem[R31, el]:u64 +000001b2: R2 := R31 + 8 +000001b8: R6 := R31 +000001bd: R0 := 0x1F000 +000001c4: R0 := mem[R0 + 0xFD8, el]:u64 +000001c9: R3 := 0 +000001ce: R4 := 0 +000001d3: R30 := 0x670 +000001d6: call @__libc_start_main with return %000001d8 + +000001d8: +000001db: R30 := 0x674 +000001de: call @abort with return %00000612 + +00000612: +00000613: call @call_weak_fn with noreturn + +000005ed: sub abort() + + +000001dc: +000004b0: R16 := 0x20000 +000004b7: R17 := mem[R16 + 0x20, el]:u64 +000004bd: R16 := R16 + 0x20 +000004c2: call R17 with noreturn + +000005ee: sub call_weak_fn(call_weak_fn_result) +00000624: call_weak_fn_result :: out u32 = low:32[R0] + +000001e0: +000001e3: R0 := 0x1F000 +000001ea: R0 := mem[R0 + 0xFD0, el]:u64 +000001f0: when R0 = 0 goto %000001ee +00000614: goto %000003a6 + +000001ee: +000001f6: call R30 with noreturn + +000003a6: +000003a9: goto @__gmon_start__ + +000003a7: +0000049a: R16 := 0x20000 +000004a1: R17 := mem[R16 + 0x18, el]:u64 +000004a7: R16 := R16 + 0x18 +000004ac: call R17 with noreturn + +000005f0: sub deregister_tm_clones(deregister_tm_clones_result) +00000625: deregister_tm_clones_result :: out u32 = low:32[R0] + +000001fc: +000001ff: R0 := 0x20000 +00000205: R0 := R0 + 0x48 +0000020a: R1 := 0x20000 +00000210: R1 := R1 + 0x48 +00000216: #1 := ~R0 +0000021b: #2 := R1 + ~R0 +00000221: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +00000227: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +0000022b: ZF := #2 + 1 = 0 +0000022f: NF := 63:63[#2 + 1] +00000235: when ZF goto %00000233 +00000615: goto %00000388 + +00000388: +0000038b: R1 := 0x1F000 +00000392: R1 := mem[R1 + 0xFC0, el]:u64 +00000397: when R1 = 0 goto %00000233 +00000616: goto %0000039b + +00000233: +0000023b: call R30 with noreturn + +0000039b: +0000039f: R16 := R1 +000003a4: call R16 with noreturn + +000005f3: sub frame_dummy(frame_dummy_result) +00000626: frame_dummy_result :: out u32 = low:32[R0] + +000002d2: +000002d4: call @register_tm_clones with noreturn + +000005f4: sub main(main_argc, main_argv, main_result) +00000627: main_argc :: in u32 = low:32[R0] +00000628: main_argv :: in out u64 = R1 +00000629: main_result :: out u32 = low:32[R0] + +000002d6: +000002da: #4 := R31 - 0x10 +000002e0: mem := mem with [#4, el]:u64 <- R29 +000002e6: mem := mem with [#4 + 8, el]:u64 <- R30 +000002ea: R31 := #4 +000002f0: R29 := R31 +000002f5: R2 := 0xE +000002fa: R0 := 0x20000 +00000300: R1 := R0 + 0x38 +00000305: R0 := 0x20000 +0000030b: R0 := R0 + 0x50 +00000310: R30 := 0x774 +00000313: call @memcpy with return %00000315 + +00000315: +00000318: R0 := 0 +0000031f: R29 := mem[R31, el]:u64 +00000324: R30 := mem[R31 + 8, el]:u64 +00000328: R31 := R31 + 0x10 +0000032d: call R30 with noreturn + +000005f5: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000062a: memcpy_dst :: in out u64 = R0 +0000062b: memcpy_src :: in out u64 = R1 +0000062c: memcpy_n :: in u64 = R2 +0000062d: memcpy_result :: out u64 = R0 + +00000311: +00000458: R16 := 0x20000 +0000045f: R17 := mem[R16, el]:u64 +00000465: R16 := R16 +0000046a: call R17 with noreturn + +000005f6: sub register_tm_clones(register_tm_clones_result) +0000062e: register_tm_clones_result :: out u32 = low:32[R0] + +0000023d: +00000240: R0 := 0x20000 +00000246: R0 := R0 + 0x48 +0000024b: R1 := 0x20000 +00000251: R1 := R1 + 0x48 +00000258: R1 := R1 + ~R0 + 1 +0000025e: R2 := 0.63:63[R1] +00000265: R1 := R2 + (R1 ~>> 3) +0000026b: R1 := extend:64[63:1[R1]] +00000271: when R1 = 0 goto %0000026f +00000617: goto %0000036a + +0000036a: +0000036d: R2 := 0x1F000 +00000374: R2 := mem[R2 + 0xFE0, el]:u64 +00000379: when R2 = 0 goto %0000026f +00000618: goto %0000037d + +0000026f: +00000277: call R30 with noreturn + +0000037d: +00000381: R16 := R2 +00000386: call R16 with noreturn diff --git a/examples/memcpy-variants/example.c b/examples/memcpy-variants/example.c new file mode 100644 index 000000000..ef3284700 --- /dev/null +++ b/examples/memcpy-variants/example.c @@ -0,0 +1,9 @@ +#include +#include + +char text[14] = "BASIL Verifier"; +char copiedtext[14] = {}; + +int main() { + memcpy(copiedtext, text, 14); +} diff --git a/examples/memcpy-variants/example.relf b/examples/memcpy-variants/example.relf new file mode 100644 index 000000000..71085d5de --- /dev/null +++ b/examples/memcpy-variants/example.relf @@ -0,0 +1,127 @@ + +Relocation section '.rela.dyn' at offset 0x480 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdc8 0000000000000403 R_AARCH64_RELATIVE 750 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 700 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 754 +0000000000020030 0000000000000403 R_AARCH64_RELATIVE 20030 +000000000001ffc0 0000000500000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_deregisterTMCloneTable + 0 +000000000001ffc8 0000000600000401 R_AARCH64_GLOB_DAT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +000000000001ffd0 0000000700000401 R_AARCH64_GLOB_DAT 0000000000000000 __gmon_start__ + 0 +000000000001ffe0 0000000900000401 R_AARCH64_GLOB_DAT 0000000000000000 _ITM_registerTMCloneTable + 0 + +Relocation section '.rela.plt' at offset 0x540 contains 5 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 __libc_start_main@GLIBC_2.34 + 0 +0000000000020010 0000000600000402 R_AARCH64_JUMP_SLOT 0000000000000000 __cxa_finalize@GLIBC_2.17 + 0 +0000000000020018 0000000700000402 R_AARCH64_JUMP_SLOT 0000000000000000 __gmon_start__ + 0 +0000000000020020 0000000800000402 R_AARCH64_JUMP_SLOT 0000000000000000 abort@GLIBC_2.17 + 0 + +Symbol table '.dynsym' contains 10 entries: + Num: Value Size Type Bind Vis Ndx Name + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND + 1: 00000000000005b8 0 SECTION LOCAL DEFAULT 11 .init + 2: 0000000000020028 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 __libc_start_main@GLIBC_2.34 (3) + 5: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 6: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 (2) + 7: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 8: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 (2) + 9: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + +Symbol table '.symtab' contains 92 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: 00000000000003a8 0 SECTION LOCAL DEFAULT 6 .dynstr + 7: 000000000000043c 0 SECTION LOCAL DEFAULT 7 .gnu.version + 8: 0000000000000450 0 SECTION LOCAL DEFAULT 8 .gnu.version_r + 9: 0000000000000480 0 SECTION LOCAL DEFAULT 9 .rela.dyn + 10: 0000000000000540 0 SECTION LOCAL DEFAULT 10 .rela.plt + 11: 00000000000005b8 0 SECTION LOCAL DEFAULT 11 .init + 12: 00000000000005d0 0 SECTION LOCAL DEFAULT 12 .plt + 13: 0000000000000640 0 SECTION LOCAL DEFAULT 13 .text + 14: 0000000000000780 0 SECTION LOCAL DEFAULT 14 .fini + 15: 0000000000000794 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 0000000000000798 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000007d8 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: 0000000000020028 0 SECTION LOCAL DEFAULT 23 .data + 24: 0000000000020048 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: 0000000000000640 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 00000000000007ec 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 0000000000000794 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 0000000000000674 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 0000000000000674 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000005b8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 0000000000000780 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000005c8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 000000000000078c 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 41: 0000000000000690 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000000690 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 43: 00000000000006c0 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 44: 0000000000020030 0 NOTYPE LOCAL DEFAULT 23 $d + 45: 0000000000000700 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 46: 0000000000020048 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: 0000000000000750 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: 0000000000000800 0 NOTYPE LOCAL DEFAULT 17 $d + 53: 0000000000020048 0 NOTYPE LOCAL DEFAULT 24 $d + 54: 0000000000000000 0 FILE LOCAL DEFAULT ABS example.c + 55: 0000000000020038 0 NOTYPE LOCAL DEFAULT 23 $d + 56: 0000000000020050 0 NOTYPE LOCAL DEFAULT 24 $d + 57: 0000000000000754 0 NOTYPE LOCAL DEFAULT 13 $x + 58: 0000000000000860 0 NOTYPE LOCAL DEFAULT 17 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000880 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000880 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 0000000000000798 0 NOTYPE LOCAL DEFAULT 16 __GNU_EH_FRAME_HDR + 65: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 66: 00000000000005d0 0 NOTYPE LOCAL DEFAULT 12 $x + 67: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 68: 0000000000020038 14 OBJECT GLOBAL DEFAULT 23 text + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 70: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 71: 0000000000020028 0 NOTYPE WEAK DEFAULT 23 data_start + 72: 0000000000020046 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020060 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 0000000000020046 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 0000000000000780 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020060 0 NOTYPE GLOBAL DEFAULT 24 __bss_end__ + 78: 0000000000020028 0 NOTYPE GLOBAL DEFAULT 23 __data_start + 79: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 80: 0000000000020030 0 OBJECT GLOBAL HIDDEN 23 __dso_handle + 81: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 82: 0000000000000794 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 83: 0000000000020060 0 NOTYPE GLOBAL DEFAULT 24 _end + 84: 0000000000000640 52 FUNC GLOBAL DEFAULT 13 _start + 85: 0000000000020050 14 OBJECT GLOBAL DEFAULT 24 copiedtext + 86: 0000000000020060 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 87: 0000000000020046 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 88: 0000000000000754 44 FUNC GLOBAL DEFAULT 13 main + 89: 0000000000020048 0 OBJECT GLOBAL HIDDEN 23 __TMC_END__ + 90: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 91: 00000000000005b8 0 FUNC GLOBAL HIDDEN 11 _init diff --git a/examples/memcpy-variants/example.spec b/examples/memcpy-variants/example.spec new file mode 100644 index 000000000..0f3741d2a --- /dev/null +++ b/examples/memcpy-variants/example.spec @@ -0,0 +1,27 @@ +Globals: +text: char[14] +copiedtext: char[14] + +// verifies + +DIRECT functions: gamma_load64, gamma_load8, memory_load8_le, bvult64, bvule64, bvsub64, gamma_load32, bvuge64, bvugt64 + + +Subroutine: main +Requires DIRECT: "malloc_count == 0" +Requires DIRECT: "R31 == 100bv64" +// "BASIL Verifier" +// 66, 65, 83, 73, 76, 32, 86, 101, 114, 105, 102, 105, 101, 114 +Ensures: (66bv8 == copiedtext[0]) && (65bv8 == copiedtext[1]) && (83bv8 == copiedtext[2]) && (73bv8 == copiedtext[3]) && (76bv8 == copiedtext[4]) && (32bv8 == copiedtext[5]) && (86bv8 == copiedtext[6]) && (101bv8 == copiedtext[7]) && (114bv8 == copiedtext[8]) && (105bv8 == copiedtext[9]) && (102bv8 == copiedtext[10]) && (105bv8 == copiedtext[11]) == (101bv8 == copiedtext[12]) && (114bv8 == copiedtext[13]) +Ensures: (text[0] == copiedtext[0]) && (text[1] == copiedtext[1]) && text[2] == copiedtext[2] && text[3] == copiedtext[3] && text[4] == copiedtext[4] && text[5] == copiedtext[5] && text[6] == copiedtext[6] && text[7] == copiedtext[7] && text[8] == copiedtext[8] && text[9] == copiedtext[9] && text[10] == copiedtext[10] && text[11] == copiedtext[11] && text[12] == copiedtext[12] && text[13] == copiedtext[13] + +Subroutine: memcpy + Modifies: mem + // don't overlap + //Requires DIRECT: "bvugt64(R0, bvadd64(R1, R2)) || bvugt64(R1, bvadd64(R0, R2))" + // don't wrap around + //Requires DIRECT: "bvugt64(bvadd64(R0, R2), R0) && bvugt64(bvadd64(R1, R2), R1)" + + Ensures DIRECT: "(forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i, bvadd64(R0, R2))) then gamma_load8((Gamma_mem), bvadd64(bvsub64(i, R0), R1)) else old(gamma_load8(Gamma_mem, i))))" + Ensures DIRECT: "(forall i: bv64 :: {mem[i], old(mem[i])} (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le((mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i))))" + diff --git a/examples/memcpy-variants/memcpyspec-iterindex.spec b/examples/memcpy-variants/memcpyspec-iterindex.spec new file mode 100644 index 000000000..0a91cfdfc --- /dev/null +++ b/examples/memcpy-variants/memcpyspec-iterindex.spec @@ -0,0 +1,30 @@ +Globals: +text: char[14] +copiedtext: char[14] + +// verifies + +DIRECT functions: gamma_load64, gamma_load8, memory_load8_le, bvult64, bvule64, bvsub64, gamma_load32, bvuge64, bvugt64 + + +Subroutine: main +Requires DIRECT: "malloc_count == 0" +Requires DIRECT: "R31 == 100bv64" +// "BASIL Verifier" +// 66, 65, 83, 73, 76, 32, 86, 101, 114, 105, 102, 105, 101, 114 +Ensures: (66bv8 == copiedtext[0]) && (65bv8 == copiedtext[1]) && (83bv8 == copiedtext[2]) && (73bv8 == copiedtext[3]) && (76bv8 == copiedtext[4]) && (32bv8 == copiedtext[5]) && (86bv8 == copiedtext[6]) && (101bv8 == copiedtext[7]) && (114bv8 == copiedtext[8]) && (105bv8 == copiedtext[9]) && (102bv8 == copiedtext[10]) && (105bv8 == copiedtext[11]) == (101bv8 == copiedtext[12]) && (114bv8 == copiedtext[13]) +Ensures: (text[0] == copiedtext[0]) && (text[1] == copiedtext[1]) && text[2] == copiedtext[2] && text[3] == copiedtext[3] && text[4] == copiedtext[4] && text[5] == copiedtext[5] && text[6] == copiedtext[6] && text[7] == copiedtext[7] && text[8] == copiedtext[8] && text[9] == copiedtext[9] && text[10] == copiedtext[10] && text[11] == copiedtext[11] && text[12] == copiedtext[12] && text[13] == copiedtext[13] + +Subroutine: memcpy + Modifies: mem, R0 + Requires DIRECT: "bvugt64(R0, bvadd64(R1, R2)) || bvugt64(R1, bvadd64(R0, R2))" + // don't wrap around + Requires DIRECT: "bvugt64(bvadd64(R0, R2), R0) && bvugt64(bvadd64(R1, R2), R1)" + Requires DIRECT: "(exists i: bv64 :: ((bvuge64(i, 0bv64) && bvult64(i, R2))))" + Ensures DIRECT: "(forall i: bv64 :: { mem[i]} ((bvuge64(i, 0bv64) && bvult64(i, R2) && bvuge64(bvadd64(R0, i), R1) && bvuge64(bvadd64(R0, i), R0)) ==> (R0 == 5bv64 && mem[bvadd64(R0, i)] == old(memory_load8_le(mem, bvadd64(R1, i))))))" + // don't change if outside range + //Ensures: text == old(text) + //Ensures DIRECT: "(forall i: bv64 :: ((bvult64(i, R0) || bvuge64(i, bvadd64(R0, R2))) ==> mem[i] == old(mem[i])))" + + + diff --git a/examples/simplified_http_parse_basic/example.adt b/examples/simplified_http_parse_basic/example.adt deleted file mode 100644 index 57c3fb417..000000000 --- a/examples/simplified_http_parse_basic/example.adt +++ /dev/null @@ -1,769 +0,0 @@ -Project(Attrs([Attr("filename","/tmp/tmp3ywqtcgw/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 2468 20 2468)\n(code-region 2048 420 2048)\n(code-region 1856 192 1856)\n(code-region 1832 24 1832)\n(code-start 2100)\n(code-start 2048)\n(code-start 2324)\n(entry-point 2048)\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 1832 0)\n(llvm:code-entry main 2324 144)\n(llvm:code-entry _start 2048 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 2468 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 2320 0)\n(llvm:code-entry __do_global_dtors_aux 2240 0)\n(llvm:code-entry register_tm_clones 2176 0)\n(llvm:code-entry deregister_tm_clones 2128 0)\n(llvm:code-entry call_weak_fn 2100 20)\n(llvm:code-entry .fini 2468 20)\n(llvm:code-entry .text 2048 420)\n(llvm:code-entry .plt 1856 192)\n(llvm:code-entry .init 1832 24)\n(llvm:elf-program-header 08 64936 600)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2492 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64952 512)\n(llvm:elf-program-header 03 64936 708)\n(llvm:elf-program-header 02 0 2764)\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 130472 600)\n(llvm:elf-virtual-program-header 07 0 0)\n(llvm:elf-virtual-program-header 06 2492 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130488 512)\n(llvm:elf-virtual-program-header 03 130472 728)\n(llvm:elf-virtual-program-header 02 0 2764)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 2048)\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 371 70374)\n(llvm:section-entry .strtab 0 734 69640)\n(llvm:section-entry .symtab 0 2784 66856)\n(llvm:section-entry .debug_str_offsets 0 60 66790)\n(llvm:section-entry .debug_loclists 0 31 66759)\n(llvm:section-entry .debug_line_str 0 211 66548)\n(llvm:section-entry .debug_addr 0 48 66500)\n(llvm:section-entry .debug_str 0 212 66288)\n(llvm:section-entry .debug_line 0 206 66082)\n(llvm:section-entry .debug_abbrev 0 193 65889)\n(llvm:section-entry .debug_info 0 174 65715)\n(llvm:section-entry .comment 0 71 65644)\n(llvm:section-entry .bss 131184 16 65644)\n(llvm:section-entry .data 131152 28 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130488 512 64952)\n(llvm:section-entry .fini_array 130480 8 64944)\n(llvm:section-entry .init_array 130472 8 64936)\n(llvm:section-entry .eh_frame 2552 212 2552)\n(llvm:section-entry .eh_frame_hdr 2492 60 2492)\n(llvm:section-entry .rodata 2488 4 2488)\n(llvm:section-entry .fini 2468 20 2468)\n(llvm:section-entry .text 2048 420 2048)\n(llvm:section-entry .plt 1856 192 1856)\n(llvm:section-entry .init 1832 24 1832)\n(llvm:section-entry .rela.plt 1592 240 1592)\n(llvm:section-entry .rela.dyn 1400 192 1400)\n(llvm:section-entry .gnu.version_r 1352 48 1352)\n(llvm:section-entry .gnu.version 1322 30 1322)\n(llvm:section-entry .dynstr 1136 185 1136)\n(llvm:section-entry .dynsym 776 360 776)\n(llvm:section-entry .gnu.hash 744 28 744)\n(llvm:section-entry .hash 664 80 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 .debug_str_offsets true false false)\n(llvm:section-flags .debug_loclists true false false)\n(llvm:section-flags .debug_line_str true false false)\n(llvm:section-flags .debug_addr true false false)\n(llvm:section-flags .debug_str true false false)\n(llvm:section-flags .debug_line true false false)\n(llvm:section-flags .debug_abbrev true false false)\n(llvm:section-flags .debug_info 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 .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 1832 0 1832 1832)\n(llvm:symbol-entry main 2324 144 2324 2324)\n(llvm:symbol-entry _start 2048 52 2048 2048)\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 2468 0 2468 2468)\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 2320 0 2320 2320)\n(llvm:symbol-entry __do_global_dtors_aux 2240 0 2240 2240)\n(llvm:symbol-entry register_tm_clones 2176 0 2176 2176)\n(llvm:symbol-entry deregister_tm_clones 2128 0 2128 2128)\n(llvm:symbol-entry call_weak_fn 2100 20 2100 2100)\n(mapped 0 2764 0)\n(mapped 130472 708 64936)\n(named-region 0 2764 02)\n(named-region 130472 728 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 80 .hash)\n(named-region 744 28 .gnu.hash)\n(named-region 776 360 .dynsym)\n(named-region 1136 185 .dynstr)\n(named-region 1322 30 .gnu.version)\n(named-region 1352 48 .gnu.version_r)\n(named-region 1400 192 .rela.dyn)\n(named-region 1592 240 .rela.plt)\n(named-region 1832 24 .init)\n(named-region 1856 192 .plt)\n(named-region 2048 420 .text)\n(named-region 2468 20 .fini)\n(named-region 2488 4 .rodata)\n(named-region 2492 60 .eh_frame_hdr)\n(named-region 2552 212 .eh_frame)\n(named-region 130472 8 .init_array)\n(named-region 130480 8 .fini_array)\n(named-region 130488 512 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 28 .data)\n(named-region 131184 16 .bss)\n(named-region 0 71 .comment)\n(named-region 0 174 .debug_info)\n(named-region 0 193 .debug_abbrev)\n(named-region 0 206 .debug_line)\n(named-region 0 212 .debug_str)\n(named-region 0 48 .debug_addr)\n(named-region 0 211 .debug_line_str)\n(named-region 0 31 .debug_loclists)\n(named-region 0 60 .debug_str_offsets)\n(named-region 0 2784 .symtab)\n(named-region 0 734 .strtab)\n(named-region 0 371 .shstrtab)\n(named-symbol 2100 call_weak_fn)\n(named-symbol 2128 deregister_tm_clones)\n(named-symbol 2176 register_tm_clones)\n(named-symbol 2240 __do_global_dtors_aux)\n(named-symbol 2320 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 2468 _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 2048 _start)\n(named-symbol 2324 main)\n(named-symbol 1832 _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 80)\n(section 744 28)\n(section 776 360)\n(section 1136 185)\n(section 1322 30)\n(section 1352 48)\n(section 1400 192)\n(section 1592 240)\n(section 1832 24)\n(section 1856 192)\n(section 2048 420)\n(section 2468 20)\n(section 2488 4)\n(section 2492 60)\n(section 2552 212)\n(section 130472 8)\n(section 130480 8)\n(section 130488 512)\n(section 131000 48)\n(section 131048 104)\n(section 131152 28)\n(section 131184 16)\n(section 0 71)\n(section 0 174)\n(section 0 193)\n(section 0 206)\n(section 0 212)\n(section 0 48)\n(section 0 211)\n(section 0 31)\n(section 0 60)\n(section 0 2784)\n(section 0 734)\n(section 0 371)\n(segment 0 2764 true false true)\n(segment 130472 728 true true false)\n(subarch v8)\n(symbol-chunk 2100 20 2100)\n(symbol-chunk 2048 52 2048)\n(symbol-chunk 2324 144 2324)\n(symbol-value 2100 2100)\n(symbol-value 2128 2128)\n(symbol-value 2176 2176)\n(symbol-value 2240 2240)\n(symbol-value 2320 2320)\n(symbol-value 2468 2468)\n(symbol-value 2048 2048)\n(symbol-value 2324 2324)\n(symbol-value 1832 1832)\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x26\x00\x25\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\xcc\x0a\x00\x00\x00\x00\x00\x00\xcc\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xa8\xfd\x00\x00\x00\x00\x00\x00\xa8\xfd\x01\x00\x00\x00\x00\x00\xa8\xfd\x01\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02\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"), -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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x26\x00\x25\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\xcc\x0a\x00\x00\x00\x00\x00\x00\xcc\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xa8\xfd\x00\x00\x00\x00\x00\x00\xa8\xfd\x01\x00\x00\x00\x00\x00\xa8\xfd\x01\x00\x00\x00\x00\x00\xc4\x02\x00\x00\x00\x00\x00\x00\xd8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02\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\xbc\x09\x00\x00\x00\x00\x00\x00\xbc\x09\x00\x00\x00\x00\x00\x00\xbc\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\xa8\xfd\x00\x00\x00\x00\x00\x00\xa8\xfd\x01\x00\x00\x00\x00\x00\xa8\xfd\x01\x00\x00\x00\x00\x00\x58\x02\x00\x00\x00\x00\x00\x00\x58\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\x8e\x54\x4e\x34\xa5\x36\x3e\xb3\x17\xdc\x78\xe2\xa5\x81\x5c\x16\x52\x55\x80\xef\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\x03\x00\x00\x00\x0f\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x06\x00"), -Section(".debug_str_offsets", 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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00"), -Section(".debug_loclists", 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\x00\x08\x00\x00\x00\x00\x00"), -Section(".debug_line_str", 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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x26\x00\x25\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\xcc\x0a\x00"), -Section(".debug_addr", 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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00"), -Section(".debug_str", 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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x26\x00\x25\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\xcc\x0a\x00\x00"), -Section(".debug_line", 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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x26\x00\x25\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"), -Section(".debug_abbrev", 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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x26\x00\x25\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"), -Section(".debug_info", 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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x26\x00\x25\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"), -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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x60\x14\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x26\x00\x25\x00\x06\x00\x00\x00\x04\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\x8e\x54\x4e\x34\xa5\x36\x3e\xb3\x17\xdc\x78\xe2\xa5\x81\x5c\x16\x52\x55\x80\xef"), -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(".hash", 0x298, "\x03\x00\x00\x00\x0f\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x06\x00\x00\x00\x0c\x00\x00\x00\x0d\x00\x00\x00"), -Section(".gnu.hash", 0x2E8, "\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", 0x308, "\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\x0c\x00\x28\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x18\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\x74\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\x90\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\x9f\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", 0x470, "\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\x2e\x2f\x6c\x69\x62\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", 0x52A, "\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", 0x548, "\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", 0x578, "\xa8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x10\x09\x00\x00\x00\x00\x00\x00\xb0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xc0\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x14\x09\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", 0x638, "\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", 0x728, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x40\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".plt", 0x740, "\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", 0x9A4, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), -Section(".rodata", 0x9B8, "\x01\x00\x02\x00"), -Section(".eh_frame_hdr", 0x9BC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x44\xfe\xff\xff\x50\x00\x00\x00\x94\xfe\xff\xff\x64\x00\x00\x00\xc4\xfe\xff\xff\x78\x00\x00\x00\x04\xff\xff\xff\x8c\x00\x00\x00\x54\xff\xff\xff\xb0\x00\x00\x00\x58\xff\xff\xff\xd8\x00\x00\x00"), -Section(".eh_frame", 0x9F8, "\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\xec\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x28\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x44\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x70\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\x9c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x7c\x1e\x01\x1b\x0c\x1f\x00\x30\x00\x00\x00\x18\x00\x00\x00\x78\xfe\xff\xff\x90\x00\x00\x00\x00\x44\x0e\x30\x4c\x0c\x1d\x30\x93\x02\x94\x04\x95\x06\x96\x08\x9e\x0a\x9d\x0c\x02\x70\x0c\x1f\x30\x4c\x0e\x00\xd3\xd4\xd5\xd6\xde\xdd\x00\x00\x00\x00\x00\x00"), -Section(".fini_array", 0x1FDB0, "\xc0\x08\x00\x00\x00\x00\x00\x00"), -Section(".dynamic", 0x1FDB8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x1d\x00\x00\x00\x00\x00\x00\x00\x6e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x28\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xa4\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xa8\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\xb0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x70\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x08\x03\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\xb9\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\x38\x06\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x78\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\x48\x05\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\x2a\x05\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", 0x1FDA8, "\x10\x09\x00\x00\x00\x00\x00\x00"), -Section(".got", 0x1FFB8, "\xb8\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\x14\x09\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\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\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\x68\x65\x6c\x00\x00\x00\x00\x00\x00\x00\x00"), -Section(".text", 0x800, "\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\xd5\xff\xff\x97\xe8\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xe0\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc2\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\xa9\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xc2\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\xf6\x57\x01\xa9\xf4\x4f\x02\xa9\xfd\x03\x00\x91\x08\x01\x00\x90\x13\x01\x00\x90\x73\x86\x01\x91\xe0\x03\x13\xaa\x08\x81\x41\x39\x68\x0a\x00\x39\x8d\xff\xff\x97\x14\x04\x00\x91\xe0\x03\x14\xaa\x96\xff\xff\x97\x16\x01\x00\x90\xe1\x03\x13\xaa\xe2\x03\x14\xaa\xf5\x03\x00\xaa\xc0\x3e\x00\xf9\x80\xff\xff\x97\xe0\x03\x15\xaa\x9e\xff\xff\x97\xd3\x3e\x40\xf9\xe0\x03\x13\xaa\x7f\xff\xff\x97\x02\x04\x00\x91\xe0\x03\x13\xaa\xe1\x03\x1f\x2a\x8b\xff\xff\x97\xc0\x3e\x40\xf9\x99\xff\xff\x97\xe0\x03\x1f\x2a\xf4\x4f\x42\xa9\xf6\x57\x41\xa9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), -Memmap([Annotation(Region(0x0,0xACB), Attr("segment","02 0 2764")), -Annotation(Region(0x800,0x833), Attr("symbol","_start")), -Annotation(Region(0x0,0x172), Attr("section",".shstrtab")), -Annotation(Region(0x0,0x2DD), Attr("section",".strtab")), -Annotation(Region(0x0,0x3B), Attr("section",".debug_str_offsets")), -Annotation(Region(0x0,0x1E), Attr("section",".debug_loclists")), -Annotation(Region(0x0,0xD2), Attr("section",".debug_line_str")), -Annotation(Region(0x0,0x2F), Attr("section",".debug_addr")), -Annotation(Region(0x0,0xD3), Attr("section",".debug_str")), -Annotation(Region(0x0,0xCD), Attr("section",".debug_line")), -Annotation(Region(0x0,0xC0), Attr("section",".debug_abbrev")), -Annotation(Region(0x0,0xAD), Attr("section",".debug_info")), -Annotation(Region(0x0,0x46), 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,0x2E7), Attr("section",".hash")), -Annotation(Region(0x2E8,0x303), Attr("section",".gnu.hash")), -Annotation(Region(0x308,0x46F), Attr("section",".dynsym")), -Annotation(Region(0x470,0x528), Attr("section",".dynstr")), -Annotation(Region(0x52A,0x547), Attr("section",".gnu.version")), -Annotation(Region(0x548,0x577), Attr("section",".gnu.version_r")), -Annotation(Region(0x578,0x637), Attr("section",".rela.dyn")), -Annotation(Region(0x638,0x727), Attr("section",".rela.plt")), -Annotation(Region(0x728,0x73F), Attr("section",".init")), -Annotation(Region(0x740,0x7FF), Attr("section",".plt")), -Annotation(Region(0x728,0x73F), Attr("code-region","()")), -Annotation(Region(0x740,0x7FF), Attr("code-region","()")), -Annotation(Region(0x800,0x833), Attr("symbol-info","_start 0x800 52")), -Annotation(Region(0x834,0x847), Attr("symbol","call_weak_fn")), -Annotation(Region(0x834,0x847), Attr("symbol-info","call_weak_fn 0x834 20")), -Annotation(Region(0x914,0x9A3), Attr("symbol","main")), -Annotation(Region(0x914,0x9A3), Attr("symbol-info","main 0x914 144")), -Annotation(Region(0x9A4,0x9B7), Attr("section",".fini")), -Annotation(Region(0x9B8,0x9BB), Attr("section",".rodata")), -Annotation(Region(0x9BC,0x9F7), Attr("section",".eh_frame_hdr")), -Annotation(Region(0x9F8,0xACB), Attr("section",".eh_frame")), -Annotation(Region(0x1FDA8,0x2006B), Attr("segment","03 0x1FDA8 728")), -Annotation(Region(0x1FDB0,0x1FDB7), Attr("section",".fini_array")), -Annotation(Region(0x1FDB8,0x1FFB7), Attr("section",".dynamic")), -Annotation(Region(0x1FDA8,0x1FDAF), Attr("section",".init_array")), -Annotation(Region(0x1FFB8,0x1FFE7), Attr("section",".got")), -Annotation(Region(0x1FFE8,0x2004F), Attr("section",".got.plt")), -Annotation(Region(0x20050,0x2006B), Attr("section",".data")), -Annotation(Region(0x800,0x9A3), Attr("section",".text")), -Annotation(Region(0x800,0x9A3), Attr("code-region","()")), -Annotation(Region(0x9A4,0x9B7), Attr("code-region","()"))]), -Program(Tid(2_128, "%00000850"), Attrs([]), - Subs([Sub(Tid(2_100, "@__cxa_finalize"), Attrs([Attr("address","0x790"), -Attr("stub","()"), Attr("c.proto","signed (*)(void)")]), "__cxa_finalize", - Args([Arg(Tid(2_129, "%00000851"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("__cxa_finalize_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_204, "@__cxa_finalize"), Attrs([Attr("address","0x790")]), - Phis([]), Defs([Def(Tid(1_592, "%00000638"), Attrs([Attr("address","0x790"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_599, "%0000063f"), Attrs([Attr("address","0x794"), -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_605, "%00000645"), Attrs([Attr("address","0x798"), -Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_610, "%0000064a"), - Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_101, "@__do_global_dtors_aux"), Attrs([Attr("address","0x8C0"), -Attr("c.proto","signed (*)(void)")]), "__do_global_dtors_aux", - Args([Arg(Tid(2_130, "%00000852"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("__do_global_dtors_aux_result",Imm(32)), LOW(32,Var("R0",Imm(64))), -Out())]), Blks([Blk(Tid(758, "@__do_global_dtors_aux"), - Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(762, "%000002fa"), - Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), -Def(Tid(768, "%00000300"), Attrs([Attr("address","0x8C0"), -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(774, "%00000306"), Attrs([Attr("address","0x8C0"), -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(778, "%0000030a"), Attrs([Attr("address","0x8C0"), -Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), -Var("#3",Imm(64))), Def(Tid(784, "%00000310"), - Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(792, "%00000318"), - Attrs([Attr("address","0x8C8"), 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(797, "%0000031d"), Attrs([Attr("address","0x8CC"), -Attr("insn","adrp x19, #131072")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(804, "%00000324"), Attrs([Attr("address","0x8D0"), -Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), -UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), -Jmps([Goto(Tid(810, "%0000032a"), Attrs([Attr("address","0x8D4"), -Attr("insn","tbnz w0, #0x0, #0x28")]), - EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(808, "%00000328"))), -Goto(Tid(2_102, "%00000836"), Attrs([]), Int(1,1), -Direct(Tid(1_149, "%0000047d")))])), Blk(Tid(1_149, "%0000047d"), - Attrs([Attr("address","0x8D8")]), Phis([]), -Defs([Def(Tid(1_152, "%00000480"), Attrs([Attr("address","0x8D8"), -Attr("insn","adrp x0, #126976")]), Var("R0",Imm(64)), Int(126976,64)), -Def(Tid(1_159, "%00000487"), Attrs([Attr("address","0x8DC"), -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_165, "%0000048d"), Attrs([Attr("address","0x8E0"), -Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(1_163, "%0000048b"))), Goto(Tid(2_103, "%00000837"), Attrs([]), - Int(1,1), Direct(Tid(1_188, "%000004a4")))])), Blk(Tid(1_188, "%000004a4"), - Attrs([Attr("address","0x8E4")]), Phis([]), -Defs([Def(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x8E4"), -Attr("insn","adrp x0, #131072")]), Var("R0",Imm(64)), Int(131072,64)), -Def(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x8E8"), -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_203, "%000004b3"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), -Jmps([Call(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x8EC"), -Attr("insn","bl #-0x15c")]), Int(1,1), -(Direct(Tid(2_100, "@__cxa_finalize")),Direct(Tid(1_163, "%0000048b"))))])), -Blk(Tid(1_163, "%0000048b"), Attrs([Attr("address","0x8F0")]), Phis([]), -Defs([Def(Tid(1_171, "%00000493"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), -Jmps([Call(Tid(1_173, "%00000495"), Attrs([Attr("address","0x8F0"), -Attr("insn","bl #-0xa0")]), Int(1,1), -(Direct(Tid(2_114, "@deregister_tm_clones")),Direct(Tid(1_175, "%00000497"))))])), -Blk(Tid(1_175, "%00000497"), Attrs([Attr("address","0x8F4")]), Phis([]), -Defs([Def(Tid(1_178, "%0000049a"), Attrs([Attr("address","0x8F4"), -Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), -Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x8F8"), -Attr("insn","strb w0, [x19, #0x70]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), -Jmps([Goto(Tid(2_104, "%00000838"), Attrs([]), Int(1,1), -Direct(Tid(808, "%00000328")))])), Blk(Tid(808, "%00000328"), - Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(818, "%00000332"), - Attrs([Attr("address","0x8FC"), 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(825, "%00000339"), Attrs([Attr("address","0x900"), -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(830, "%0000033e"), Attrs([Attr("address","0x900"), -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(834, "%00000342"), Attrs([Attr("address","0x900"), -Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(839, "%00000347"), - Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_105, "@__libc_start_main"), - Attrs([Attr("address","0x780"), Attr("stub","()"), -Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)")]), - "__libc_start_main", Args([Arg(Tid(2_131, "%00000853"), - Attrs([Attr("c.data","Top:u64 ptr ptr"), -Attr("c.layout","**[ : 64]"), -Attr("c.type","signed (*)(signed , char** , char** );*")]), - Var("__libc_start_main_main",Imm(64)), Var("R0",Imm(64)), In()), -Arg(Tid(2_132, "%00000854"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("__libc_start_main_arg2",Imm(32)), LOW(32,Var("R1",Imm(64))), In()), -Arg(Tid(2_133, "%00000855"), Attrs([Attr("c.data","Top:u8 ptr ptr"), -Attr("c.layout","**[char : 8]"), Attr("c.type","char**")]), - Var("__libc_start_main_arg3",Imm(64)), Var("R2",Imm(64)), Both()), -Arg(Tid(2_134, "%00000856"), Attrs([Attr("c.data","{} ptr"), -Attr("c.layout","*[ : 8]"), Attr("c.type","void*")]), - Var("__libc_start_main_auxv",Imm(64)), Var("R3",Imm(64)), Both()), -Arg(Tid(2_135, "%00000857"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("__libc_start_main_result",Imm(32)), LOW(32,Var("R0",Imm(64))), -Out())]), Blks([Blk(Tid(591, "@__libc_start_main"), - Attrs([Attr("address","0x780")]), Phis([]), -Defs([Def(Tid(1_570, "%00000622"), Attrs([Attr("address","0x780"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_577, "%00000629"), Attrs([Attr("address","0x784"), -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_583, "%0000062f"), Attrs([Attr("address","0x788"), -Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_588, "%00000634"), - Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_106, "@_fini"), - Attrs([Attr("address","0x9A4"), Attr("c.proto","signed (*)(void)")]), - "_fini", Args([Arg(Tid(2_136, "%00000858"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("_fini_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(55, "@_fini"), Attrs([Attr("address","0x9A4")]), Phis([]), -Defs([Def(Tid(61, "%0000003d"), Attrs([Attr("address","0x9A8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#0",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A8"), -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(73, "%00000049"), Attrs([Attr("address","0x9A8"), -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(77, "%0000004d"), Attrs([Attr("address","0x9A8"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#0",Imm(64))), Def(Tid(83, "%00000053"), Attrs([Attr("address","0x9AC"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(90, "%0000005a"), Attrs([Attr("address","0x9B0"), -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(95, "%0000005f"), Attrs([Attr("address","0x9B0"), -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(99, "%00000063"), Attrs([Attr("address","0x9B0"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(104, "%00000068"), - Attrs([Attr("address","0x9B4"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_107, "@_init"), - Attrs([Attr("address","0x728"), Attr("c.proto","signed (*)(void)")]), - "_init", Args([Arg(Tid(2_137, "%00000859"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("_init_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_882, "@_init"), Attrs([Attr("address","0x728")]), Phis([]), -Defs([Def(Tid(1_888, "%00000760"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#10",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), -Def(Tid(1_894, "%00000766"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#10",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), -Def(Tid(1_900, "%0000076c"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#10",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), -Def(Tid(1_904, "%00000770"), Attrs([Attr("address","0x72C"), -Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), -Var("#10",Imm(64))), Def(Tid(1_910, "%00000776"), - Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), - Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_915, "%0000077b"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), - Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_917, "%0000077d"), - Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), -(Direct(Tid(2_112, "@call_weak_fn")),Direct(Tid(1_919, "%0000077f"))))])), -Blk(Tid(1_919, "%0000077f"), Attrs([Attr("address","0x738")]), Phis([]), -Defs([Def(Tid(1_924, "%00000784"), Attrs([Attr("address","0x738"), -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(1_929, "%00000789"), Attrs([Attr("address","0x738"), -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(1_933, "%0000078d"), Attrs([Attr("address","0x738"), -Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_938, "%00000792"), - Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_108, "@_start"), - Attrs([Attr("address","0x800"), Attr("stub","()"), Attr("entry-point","()"), -Attr("c.proto","signed (*)(void)")]), "_start", - Args([Arg(Tid(2_138, "%0000085a"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("_start_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(528, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), -Defs([Def(Tid(533, "%00000215"), Attrs([Attr("address","0x804"), -Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), -Def(Tid(538, "%0000021a"), Attrs([Attr("address","0x808"), -Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), -Def(Tid(544, "%00000220"), Attrs([Attr("address","0x80C"), -Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), -Def(Tid(551, "%00000227"), Attrs([Attr("address","0x810"), -Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), -Def(Tid(557, "%0000022d"), Attrs([Attr("address","0x814"), -Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(563, "%00000233"), - Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), - Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(568, "%00000238"), - Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #126976")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(575, "%0000023f"), - Attrs([Attr("address","0x820"), 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(580, "%00000244"), Attrs([Attr("address","0x824"), -Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), -Def(Tid(585, "%00000249"), Attrs([Attr("address","0x828"), -Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), -Def(Tid(590, "%0000024e"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), -Jmps([Call(Tid(593, "%00000251"), Attrs([Attr("address","0x82C"), -Attr("insn","bl #-0xac")]), Int(1,1), -(Direct(Tid(2_105, "@__libc_start_main")),Direct(Tid(595, "%00000253"))))])), -Blk(Tid(595, "%00000253"), Attrs([Attr("address","0x830")]), Phis([]), -Defs([Def(Tid(598, "%00000256"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), -Jmps([Call(Tid(601, "%00000259"), Attrs([Attr("address","0x830"), -Attr("insn","bl #-0x60")]), Int(1,1), -(Direct(Tid(2_111, "@abort")),Direct(Tid(2_109, "%0000083d"))))])), -Blk(Tid(2_109, "%0000083d"), Attrs([]), Phis([]), Defs([]), -Jmps([Call(Tid(2_110, "%0000083e"), Attrs([]), Int(1,1), -(Direct(Tid(2_112, "@call_weak_fn")),))]))])), Sub(Tid(2_111, "@abort"), - Attrs([Attr("address","0x7D0"), Attr("stub","()"), Attr("noreturn","()"), -Attr("c.proto","void (*)(void)")]), "abort", Args([]), -Blks([Blk(Tid(599, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), -Defs([Def(Tid(1_680, "%00000690"), Attrs([Attr("address","0x7D0"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_687, "%00000697"), Attrs([Attr("address","0x7D4"), -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_693, "%0000069d"), Attrs([Attr("address","0x7D8"), -Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_698, "%000006a2"), - Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_112, "@call_weak_fn"), - Attrs([Attr("address","0x834"), Attr("c.proto","signed (*)(void)")]), - "call_weak_fn", Args([Arg(Tid(2_139, "%0000085b"), - Attrs([Attr("c.data","Top:u32"), Attr("c.layout","[signed : 32]"), -Attr("c.type","signed")]), Var("call_weak_fn_result",Imm(32)), -LOW(32,Var("R0",Imm(64))), Out())]), Blks([Blk(Tid(603, "@call_weak_fn"), - Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(606, "%0000025e"), - Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #126976")]), - Var("R0",Imm(64)), Int(126976,64)), Def(Tid(613, "%00000265"), - Attrs([Attr("address","0x838"), 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(619, "%0000026b"), Attrs([Attr("address","0x83C"), -Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), -Direct(Tid(617, "%00000269"))), Goto(Tid(2_113, "%00000841"), Attrs([]), - Int(1,1), Direct(Tid(1_268, "%000004f4")))])), Blk(Tid(617, "%00000269"), - Attrs([Attr("address","0x844")]), Phis([]), Defs([]), -Jmps([Call(Tid(625, "%00000271"), Attrs([Attr("address","0x844"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_268, "%000004f4"), Attrs([Attr("address","0x840")]), Phis([]), -Defs([]), Jmps([Goto(Tid(1_271, "%000004f7"), Attrs([Attr("address","0x840"), -Attr("insn","b #-0x80")]), Int(1,1), -Direct(Tid(1_269, "@__gmon_start__")))])), Blk(Tid(1_269, "@__gmon_start__"), - Attrs([Attr("address","0x7C0")]), Phis([]), -Defs([Def(Tid(1_658, "%0000067a"), Attrs([Attr("address","0x7C0"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_665, "%00000681"), Attrs([Attr("address","0x7C4"), -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_671, "%00000687"), Attrs([Attr("address","0x7C8"), -Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_676, "%0000068c"), - Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_114, "@deregister_tm_clones"), Attrs([Attr("address","0x850"), -Attr("c.proto","signed (*)(void)")]), "deregister_tm_clones", - Args([Arg(Tid(2_140, "%0000085c"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("deregister_tm_clones_result",Imm(32)), LOW(32,Var("R0",Imm(64))), -Out())]), Blks([Blk(Tid(631, "@deregister_tm_clones"), - Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(634, "%0000027a"), - Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #131072")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(640, "%00000280"), - Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(645, "%00000285"), Attrs([Attr("address","0x858"), -Attr("insn","adrp x1, #131072")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(651, "%0000028b"), Attrs([Attr("address","0x85C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(657, "%00000291"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(662, "%00000296"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), -Def(Tid(668, "%0000029c"), Attrs([Attr("address","0x860"), -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(674, "%000002a2"), Attrs([Attr("address","0x860"), -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(678, "%000002a6"), Attrs([Attr("address","0x860"), -Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), -EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(682, "%000002aa"), - Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), - Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), -Jmps([Goto(Tid(688, "%000002b0"), Attrs([Attr("address","0x864"), -Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), -Direct(Tid(686, "%000002ae"))), Goto(Tid(2_115, "%00000843"), Attrs([]), - Int(1,1), Direct(Tid(1_238, "%000004d6")))])), Blk(Tid(1_238, "%000004d6"), - Attrs([Attr("address","0x868")]), Phis([]), -Defs([Def(Tid(1_241, "%000004d9"), Attrs([Attr("address","0x868"), -Attr("insn","adrp x1, #126976")]), Var("R1",Imm(64)), Int(126976,64)), -Def(Tid(1_248, "%000004e0"), Attrs([Attr("address","0x86C"), -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_253, "%000004e5"), Attrs([Attr("address","0x870"), -Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(686, "%000002ae"))), Goto(Tid(2_116, "%00000844"), Attrs([]), - Int(1,1), Direct(Tid(1_257, "%000004e9")))])), Blk(Tid(686, "%000002ae"), - Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), -Jmps([Call(Tid(694, "%000002b6"), Attrs([Attr("address","0x87C"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_257, "%000004e9"), Attrs([Attr("address","0x874")]), Phis([]), -Defs([Def(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x874"), -Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), -Jmps([Call(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x878"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_117, "@frame_dummy"), Attrs([Attr("address","0x910"), -Attr("c.proto","signed (*)(void)")]), "frame_dummy", - Args([Arg(Tid(2_141, "%0000085d"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("frame_dummy_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(845, "@frame_dummy"), Attrs([Attr("address","0x910")]), - Phis([]), Defs([]), Jmps([Call(Tid(847, "%0000034f"), - Attrs([Attr("address","0x910"), Attr("insn","b #-0x90")]), Int(1,1), -(Direct(Tid(2_124, "@register_tm_clones")),))]))])), Sub(Tid(2_118, "@free"), - Attrs([Attr("address","0x7F0"), Attr("stub","()"), -Attr("c.proto","void (*)(void* ptr)")]), "free", - Args([Arg(Tid(2_142, "%0000085e"), Attrs([Attr("c.data","{} ptr"), -Attr("c.layout","*[ : 8]"), Attr("c.type","void*")]), - Var("free_ptr",Imm(64)), Var("R0",Imm(64)), Both())]), -Blks([Blk(Tid(1_087, "@free"), Attrs([Attr("address","0x7F0")]), Phis([]), -Defs([Def(Tid(1_724, "%000006bc"), Attrs([Attr("address","0x7F0"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_731, "%000006c3"), Attrs([Attr("address","0x7F4"), -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_737, "%000006c9"), Attrs([Attr("address","0x7F8"), -Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_742, "%000006ce"), - Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_119, "@main"), - Attrs([Attr("address","0x914"), -Attr("c.proto","signed (*)(signed argc, const char** argv)")]), "main", - Args([Arg(Tid(2_143, "%0000085f"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("main_argc",Imm(32)), LOW(32,Var("R0",Imm(64))), In()), -Arg(Tid(2_144, "%00000860"), Attrs([Attr("c.data","Top:u8 ptr ptr"), -Attr("c.layout","**[char : 8]"), Attr("c.type"," const char**")]), - Var("main_argv",Imm(64)), Var("R1",Imm(64)), Both()), -Arg(Tid(2_145, "%00000861"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("main_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(849, "@main"), Attrs([Attr("address","0x914")]), Phis([]), -Defs([Def(Tid(853, "%00000355"), Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), -Def(Tid(859, "%0000035b"), Attrs([Attr("address","0x914"), -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(865, "%00000361"), Attrs([Attr("address","0x914"), -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(869, "%00000365"), Attrs([Attr("address","0x914"), -Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), -Var("#4",Imm(64))), Def(Tid(875, "%0000036b"), - Attrs([Attr("address","0x918"), Attr("insn","stp x22, x21, [sp, #0x10]")]), - Var("#5",Imm(64)), PLUS(Var("R31",Imm(64)),Int(16,64))), -Def(Tid(881, "%00000371"), Attrs([Attr("address","0x918"), -Attr("insn","stp x22, x21, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#5",Imm(64)),Var("R22",Imm(64)),LittleEndian(),64)), -Def(Tid(887, "%00000377"), Attrs([Attr("address","0x918"), -Attr("insn","stp x22, x21, [sp, #0x10]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),Var("R21",Imm(64)),LittleEndian(),64)), -Def(Tid(893, "%0000037d"), Attrs([Attr("address","0x91C"), -Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#6",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(899, "%00000383"), - Attrs([Attr("address","0x91C"), Attr("insn","stp x20, x19, [sp, #0x20]")]), - Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R20",Imm(64)),LittleEndian(),64)), -Def(Tid(905, "%00000389"), Attrs([Attr("address","0x91C"), -Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),Var("R19",Imm(64)),LittleEndian(),64)), -Def(Tid(911, "%0000038f"), Attrs([Attr("address","0x920"), -Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), -Def(Tid(916, "%00000394"), Attrs([Attr("address","0x924"), -Attr("insn","adrp x8, #131072")]), Var("R8",Imm(64)), Int(131072,64)), -Def(Tid(921, "%00000399"), Attrs([Attr("address","0x928"), -Attr("insn","adrp x19, #131072")]), Var("R19",Imm(64)), Int(131072,64)), -Def(Tid(927, "%0000039f"), Attrs([Attr("address","0x92C"), -Attr("insn","add x19, x19, #0x61")]), Var("R19",Imm(64)), -PLUS(Var("R19",Imm(64)),Int(97,64))), Def(Tid(933, "%000003a5"), - Attrs([Attr("address","0x930"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(940, "%000003ac"), - Attrs([Attr("address","0x934"), Attr("insn","ldrb w8, [x8, #0x60]")]), - Var("R8",Imm(64)), -UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(96,64)),LittleEndian(),8))), -Def(Tid(948, "%000003b4"), Attrs([Attr("address","0x938"), -Attr("insn","strb w8, [x19, #0x2]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(2,64)),Extract(7,0,Var("R8",Imm(64))),LittleEndian(),8)), -Def(Tid(953, "%000003b9"), Attrs([Attr("address","0x93C"), -Attr("insn","bl #-0x1cc")]), Var("R30",Imm(64)), Int(2368,64))]), -Jmps([Call(Tid(956, "%000003bc"), Attrs([Attr("address","0x93C"), -Attr("insn","bl #-0x1cc")]), Int(1,1), -(Direct(Tid(2_127, "@strlen")),Direct(Tid(958, "%000003be"))))])), -Blk(Tid(958, "%000003be"), Attrs([Attr("address","0x940")]), Phis([]), -Defs([Def(Tid(962, "%000003c2"), Attrs([Attr("address","0x940"), -Attr("insn","add x20, x0, #0x1")]), Var("R20",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(968, "%000003c8"), - Attrs([Attr("address","0x944"), Attr("insn","mov x0, x20")]), - Var("R0",Imm(64)), Var("R20",Imm(64))), Def(Tid(973, "%000003cd"), - Attrs([Attr("address","0x948"), Attr("insn","bl #-0x1a8")]), - Var("R30",Imm(64)), Int(2380,64))]), Jmps([Call(Tid(976, "%000003d0"), - Attrs([Attr("address","0x948"), Attr("insn","bl #-0x1a8")]), Int(1,1), -(Direct(Tid(2_120, "@malloc")),Direct(Tid(978, "%000003d2"))))])), -Blk(Tid(978, "%000003d2"), Attrs([Attr("address","0x94C")]), Phis([]), -Defs([Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x94C"), -Attr("insn","adrp x22, #131072")]), Var("R22",Imm(64)), Int(131072,64)), -Def(Tid(987, "%000003db"), Attrs([Attr("address","0x950"), -Attr("insn","mov x1, x19")]), Var("R1",Imm(64)), Var("R19",Imm(64))), -Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x954"), -Attr("insn","mov x2, x20")]), Var("R2",Imm(64)), Var("R20",Imm(64))), -Def(Tid(999, "%000003e7"), Attrs([Attr("address","0x958"), -Attr("insn","mov x21, x0")]), Var("R21",Imm(64)), Var("R0",Imm(64))), -Def(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x95C"), -Attr("insn","str x0, [x22, #0x78]")]), Var("mem",Mem(64,8)), -Store(Var("mem",Mem(64,8)),PLUS(Var("R22",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), -Def(Tid(1_012, "%000003f4"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2404,64))]), -Jmps([Call(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x960"), -Attr("insn","bl #-0x200")]), Int(1,1), -(Direct(Tid(2_121, "@memcpy")),Direct(Tid(1_017, "%000003f9"))))])), -Blk(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x964")]), Phis([]), -Defs([Def(Tid(1_021, "%000003fd"), Attrs([Attr("address","0x964"), -Attr("insn","mov x0, x21")]), Var("R0",Imm(64)), Var("R21",Imm(64))), -Def(Tid(1_026, "%00000402"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x188")]), Var("R30",Imm(64)), Int(2412,64))]), -Jmps([Call(Tid(1_029, "%00000405"), Attrs([Attr("address","0x968"), -Attr("insn","bl #-0x188")]), Int(1,1), -(Direct(Tid(2_123, "@puts")),Direct(Tid(1_031, "%00000407"))))])), -Blk(Tid(1_031, "%00000407"), Attrs([Attr("address","0x96C")]), Phis([]), -Defs([Def(Tid(1_036, "%0000040c"), Attrs([Attr("address","0x96C"), -Attr("insn","ldr x19, [x22, #0x78]")]), Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R22",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_042, "%00000412"), Attrs([Attr("address","0x970"), -Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), -Def(Tid(1_047, "%00000417"), Attrs([Attr("address","0x974"), -Attr("insn","bl #-0x204")]), Var("R30",Imm(64)), Int(2424,64))]), -Jmps([Call(Tid(1_049, "%00000419"), Attrs([Attr("address","0x974"), -Attr("insn","bl #-0x204")]), Int(1,1), -(Direct(Tid(2_127, "@strlen")),Direct(Tid(1_051, "%0000041b"))))])), -Blk(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x978")]), Phis([]), -Defs([Def(Tid(1_055, "%0000041f"), Attrs([Attr("address","0x978"), -Attr("insn","add x2, x0, #0x1")]), Var("R2",Imm(64)), -PLUS(Var("R0",Imm(64)),Int(1,64))), Def(Tid(1_061, "%00000425"), - Attrs([Attr("address","0x97C"), Attr("insn","mov x0, x19")]), - Var("R0",Imm(64)), Var("R19",Imm(64))), Def(Tid(1_066, "%0000042a"), - Attrs([Attr("address","0x980"), Attr("insn","mov w1, wzr")]), - Var("R1",Imm(64)), Int(0,64)), Def(Tid(1_071, "%0000042f"), - Attrs([Attr("address","0x984"), Attr("insn","bl #-0x1d4")]), - Var("R30",Imm(64)), Int(2440,64))]), Jmps([Call(Tid(1_074, "%00000432"), - Attrs([Attr("address","0x984"), Attr("insn","bl #-0x1d4")]), Int(1,1), -(Direct(Tid(2_122, "@memset")),Direct(Tid(1_076, "%00000434"))))])), -Blk(Tid(1_076, "%00000434"), Attrs([Attr("address","0x988")]), Phis([]), -Defs([Def(Tid(1_081, "%00000439"), Attrs([Attr("address","0x988"), -Attr("insn","ldr x0, [x22, #0x78]")]), Var("R0",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("R22",Imm(64)),Int(120,64)),LittleEndian(),64)), -Def(Tid(1_086, "%0000043e"), Attrs([Attr("address","0x98C"), -Attr("insn","bl #-0x19c")]), Var("R30",Imm(64)), Int(2448,64))]), -Jmps([Call(Tid(1_089, "%00000441"), Attrs([Attr("address","0x98C"), -Attr("insn","bl #-0x19c")]), Int(1,1), -(Direct(Tid(2_118, "@free")),Direct(Tid(1_091, "%00000443"))))])), -Blk(Tid(1_091, "%00000443"), Attrs([Attr("address","0x990")]), Phis([]), -Defs([Def(Tid(1_094, "%00000446"), Attrs([Attr("address","0x990"), -Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), -Def(Tid(1_100, "%0000044c"), Attrs([Attr("address","0x994"), -Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("#7",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(1_105, "%00000451"), - Attrs([Attr("address","0x994"), Attr("insn","ldp x20, x19, [sp, #0x20]")]), - Var("R20",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#7",Imm(64)),LittleEndian(),64)), -Def(Tid(1_110, "%00000456"), Attrs([Attr("address","0x994"), -Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R19",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#7",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x998"), -Attr("insn","ldp x22, x21, [sp, #0x10]")]), Var("#8",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(16,64))), Def(Tid(1_121, "%00000461"), - Attrs([Attr("address","0x998"), Attr("insn","ldp x22, x21, [sp, #0x10]")]), - Var("R22",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("#8",Imm(64)),LittleEndian(),64)), -Def(Tid(1_126, "%00000466"), Attrs([Attr("address","0x998"), -Attr("insn","ldp x22, x21, [sp, #0x10]")]), Var("R21",Imm(64)), -Load(Var("mem",Mem(64,8)),PLUS(Var("#8",Imm(64)),Int(8,64)),LittleEndian(),64)), -Def(Tid(1_133, "%0000046d"), Attrs([Attr("address","0x99C"), -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_138, "%00000472"), Attrs([Attr("address","0x99C"), -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_142, "%00000476"), Attrs([Attr("address","0x99C"), -Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), -PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_147, "%0000047b"), - Attrs([Attr("address","0x9A0"), Attr("insn","ret")]), Int(1,1), -(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_120, "@malloc"), - Attrs([Attr("address","0x7A0"), Attr("stub","()"), Attr("malloc","()"), -Attr("c.proto","void* (*)(unsigned long size)")]), "malloc", - Args([Arg(Tid(2_146, "%00000862"), Attrs([Attr("alloc-size","()"), -Attr("c.data","Top:u64"), Attr("c.layout","[unsigned long : 64]"), -Attr("c.type","unsigned long")]), Var("malloc_size",Imm(64)), -Var("R0",Imm(64)), In()), Arg(Tid(2_147, "%00000863"), - Attrs([Attr("warn-unused","()"), Attr("c.data","{} ptr"), -Attr("c.layout","*[ : 8]"), Attr("c.type","void*")]), - Var("malloc_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(974, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), -Defs([Def(Tid(1_614, "%0000064e"), Attrs([Attr("address","0x7A0"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_621, "%00000655"), Attrs([Attr("address","0x7A4"), -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_627, "%0000065b"), Attrs([Attr("address","0x7A8"), -Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_632, "%00000660"), - Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_121, "@memcpy"), - Attrs([Attr("address","0x760"), Attr("stub","()"), -Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)")]), - "memcpy", Args([Arg(Tid(2_148, "%00000864"), Attrs([Attr("nonnull","()"), -Attr("c.data","{} ptr"), Attr("c.layout","*[ : 8]"), -Attr("c.type","void restrict *")]), Var("memcpy_dst",Imm(64)), -Var("R0",Imm(64)), Both()), Arg(Tid(2_149, "%00000865"), - Attrs([Attr("nonnull","()"), Attr("c.data","{} ptr"), -Attr("c.layout","*[ : 8]"), Attr("c.type","void restrict *")]), - Var("memcpy_src",Imm(64)), Var("R1",Imm(64)), Both()), -Arg(Tid(2_150, "%00000866"), Attrs([Attr("c.data","Top:u64"), -Attr("c.layout","[unsigned long : 64]"), Attr("c.type","unsigned long")]), - Var("memcpy_n",Imm(64)), Var("R2",Imm(64)), In()), -Arg(Tid(2_151, "%00000867"), Attrs([Attr("c.data","{} ptr"), -Attr("c.layout","*[ : 8]"), Attr("c.type","void*")]), - Var("memcpy_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_013, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), -Defs([Def(Tid(1_526, "%000005f6"), Attrs([Attr("address","0x760"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_533, "%000005fd"), Attrs([Attr("address","0x764"), -Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), -Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), -Def(Tid(1_539, "%00000603"), Attrs([Attr("address","0x768"), -Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), -Var("R16",Imm(64)))]), Jmps([Call(Tid(1_544, "%00000608"), - Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_122, "@memset"), - Attrs([Attr("address","0x7B0"), Attr("stub","()"), -Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)")]), - "memset", Args([Arg(Tid(2_152, "%00000868"), Attrs([Attr("nonnull","()"), -Attr("c.data","{} ptr"), Attr("c.layout","*[ : 8]"), -Attr("c.type","void*")]), Var("memset_buf",Imm(64)), Var("R0",Imm(64)), -Both()), Arg(Tid(2_153, "%00000869"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("memset_c",Imm(32)), LOW(32,Var("R1",Imm(64))), In()), -Arg(Tid(2_154, "%0000086a"), Attrs([Attr("c.data","Top:u64"), -Attr("c.layout","[unsigned long : 64]"), Attr("c.type","unsigned long")]), - Var("memset_n",Imm(64)), Var("R2",Imm(64)), In()), -Arg(Tid(2_155, "%0000086b"), Attrs([Attr("c.data","{} ptr"), -Attr("c.layout","*[ : 8]"), Attr("c.type","void*")]), - Var("memset_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(1_072, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), -Defs([Def(Tid(1_636, "%00000664"), Attrs([Attr("address","0x7B0"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_643, "%0000066b"), Attrs([Attr("address","0x7B4"), -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_649, "%00000671"), Attrs([Attr("address","0x7B8"), -Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_654, "%00000676"), - Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_123, "@puts"), - Attrs([Attr("address","0x7E0"), Attr("stub","()"), -Attr("c.proto","signed (*)( const char* s)")]), "puts", - Args([Arg(Tid(2_156, "%0000086c"), Attrs([Attr("c.data","Top:u8 ptr"), -Attr("c.layout","*[char : 8]"), Attr("c.type"," const char*")]), - Var("puts_s",Imm(64)), Var("R0",Imm(64)), In()), -Arg(Tid(2_157, "%0000086d"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("puts_result",Imm(32)), LOW(32,Var("R0",Imm(64))), Out())]), -Blks([Blk(Tid(1_027, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), -Defs([Def(Tid(1_702, "%000006a6"), Attrs([Attr("address","0x7E0"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_709, "%000006ad"), Attrs([Attr("address","0x7E4"), -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_715, "%000006b3"), Attrs([Attr("address","0x7E8"), -Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_720, "%000006b8"), - Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))])), -Sub(Tid(2_124, "@register_tm_clones"), Attrs([Attr("address","0x880"), -Attr("c.proto","signed (*)(void)")]), "register_tm_clones", - Args([Arg(Tid(2_158, "%0000086e"), Attrs([Attr("c.data","Top:u32"), -Attr("c.layout","[signed : 32]"), Attr("c.type","signed")]), - Var("register_tm_clones_result",Imm(32)), LOW(32,Var("R0",Imm(64))), -Out())]), Blks([Blk(Tid(696, "@register_tm_clones"), - Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(699, "%000002bb"), - Attrs([Attr("address","0x880"), Attr("insn","adrp x0, #131072")]), - Var("R0",Imm(64)), Int(131072,64)), Def(Tid(705, "%000002c1"), - Attrs([Attr("address","0x884"), Attr("insn","add x0, x0, #0x70")]), - Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), -Def(Tid(710, "%000002c6"), Attrs([Attr("address","0x888"), -Attr("insn","adrp x1, #131072")]), Var("R1",Imm(64)), Int(131072,64)), -Def(Tid(716, "%000002cc"), Attrs([Attr("address","0x88C"), -Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), -PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(723, "%000002d3"), - Attrs([Attr("address","0x890"), 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(729, "%000002d9"), Attrs([Attr("address","0x894"), -Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), -Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), -Def(Tid(736, "%000002e0"), Attrs([Attr("address","0x898"), -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(742, "%000002e6"), Attrs([Attr("address","0x89C"), -Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), -SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), -Jmps([Goto(Tid(748, "%000002ec"), Attrs([Attr("address","0x8A0"), -Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), -Direct(Tid(746, "%000002ea"))), Goto(Tid(2_125, "%0000084d"), Attrs([]), - Int(1,1), Direct(Tid(1_208, "%000004b8")))])), Blk(Tid(1_208, "%000004b8"), - Attrs([Attr("address","0x8A4")]), Phis([]), -Defs([Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x8A4"), -Attr("insn","adrp x2, #126976")]), Var("R2",Imm(64)), Int(126976,64)), -Def(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x8A8"), -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_223, "%000004c7"), Attrs([Attr("address","0x8AC"), -Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), -Direct(Tid(746, "%000002ea"))), Goto(Tid(2_126, "%0000084e"), Attrs([]), - Int(1,1), Direct(Tid(1_227, "%000004cb")))])), Blk(Tid(746, "%000002ea"), - Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), -Jmps([Call(Tid(754, "%000002f2"), Attrs([Attr("address","0x8B8"), -Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), -Blk(Tid(1_227, "%000004cb"), Attrs([Attr("address","0x8B0")]), Phis([]), -Defs([Def(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x8B0"), -Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), -Jmps([Call(Tid(1_236, "%000004d4"), Attrs([Attr("address","0x8B4"), -Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), -Sub(Tid(2_127, "@strlen"), Attrs([Attr("address","0x770"), Attr("pure","()"), -Attr("stub","()"), Attr("c.proto","unsigned long (*)( const char* s)")]), - "strlen", Args([Arg(Tid(2_159, "%0000086f"), Attrs([Attr("nonnull","()"), -Attr("c.data","Top:u8 ptr"), Attr("c.layout","*[char : 8]"), -Attr("c.type"," const char*")]), Var("strlen_s",Imm(64)), Var("R0",Imm(64)), -In()), Arg(Tid(2_160, "%00000870"), Attrs([Attr("c.data","Top:u64"), -Attr("c.layout","[unsigned long : 64]"), Attr("c.type","unsigned long")]), - Var("strlen_result",Imm(64)), Var("R0",Imm(64)), Out())]), -Blks([Blk(Tid(954, "@strlen"), Attrs([Attr("address","0x770")]), Phis([]), -Defs([Def(Tid(1_548, "%0000060c"), Attrs([Attr("address","0x770"), -Attr("insn","adrp x16, #131072")]), Var("R16",Imm(64)), Int(131072,64)), -Def(Tid(1_555, "%00000613"), Attrs([Attr("address","0x774"), -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_561, "%00000619"), Attrs([Attr("address","0x778"), -Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), -PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_566, "%0000061e"), - Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), -(Indirect(Var("R17",Imm(64))),))]))]))]))) diff --git a/examples/simplified_http_parse_basic/example.bir b/examples/simplified_http_parse_basic/example.bir deleted file mode 100644 index e559a302f..000000000 --- a/examples/simplified_http_parse_basic/example.bir +++ /dev/null @@ -1,356 +0,0 @@ -00000850: program -00000834: sub __cxa_finalize(__cxa_finalize_result) -00000851: __cxa_finalize_result :: out u32 = low:32[R0] - -000004b4: -00000638: R16 := 0x20000 -0000063f: R17 := mem[R16 + 0x18, el]:u64 -00000645: R16 := R16 + 0x18 -0000064a: call R17 with noreturn - -00000835: sub __do_global_dtors_aux(__do_global_dtors_aux_result) -00000852: __do_global_dtors_aux_result :: out u32 = low:32[R0] - -000002f6: -000002fa: #3 := R31 - 0x20 -00000300: mem := mem with [#3, el]:u64 <- R29 -00000306: mem := mem with [#3 + 8, el]:u64 <- R30 -0000030a: R31 := #3 -00000310: R29 := R31 -00000318: mem := mem with [R31 + 0x10, el]:u64 <- R19 -0000031d: R19 := 0x20000 -00000324: R0 := pad:64[mem[R19 + 0x70]] -0000032a: when 0:0[R0] goto %00000328 -00000836: goto %0000047d - -0000047d: -00000480: R0 := 0x1F000 -00000487: R0 := mem[R0 + 0xFC8, el]:u64 -0000048d: when R0 = 0 goto %0000048b -00000837: goto %000004a4 - -000004a4: -000004a7: R0 := 0x20000 -000004ae: R0 := mem[R0 + 0x58, el]:u64 -000004b3: R30 := 0x8F0 -000004b6: call @__cxa_finalize with return %0000048b - -0000048b: -00000493: R30 := 0x8F4 -00000495: call @deregister_tm_clones with return %00000497 - -00000497: -0000049a: R0 := 1 -000004a2: mem := mem with [R19 + 0x70] <- 7:0[R0] -00000838: goto %00000328 - -00000328: -00000332: R19 := mem[R31 + 0x10, el]:u64 -00000339: R29 := mem[R31, el]:u64 -0000033e: R30 := mem[R31 + 8, el]:u64 -00000342: R31 := R31 + 0x20 -00000347: call R30 with noreturn - -00000839: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) -00000853: __libc_start_main_main :: in u64 = R0 -00000854: __libc_start_main_arg2 :: in u32 = low:32[R1] -00000855: __libc_start_main_arg3 :: in out u64 = R2 -00000856: __libc_start_main_auxv :: in out u64 = R3 -00000857: __libc_start_main_result :: out u32 = low:32[R0] - -0000024f: -00000622: R16 := 0x20000 -00000629: R17 := mem[R16 + 0x10, el]:u64 -0000062f: R16 := R16 + 0x10 -00000634: call R17 with noreturn - -0000083a: sub _fini(_fini_result) -00000858: _fini_result :: out u32 = low:32[R0] - -00000037: -0000003d: #0 := R31 - 0x10 -00000043: mem := mem with [#0, el]:u64 <- R29 -00000049: mem := mem with [#0 + 8, el]:u64 <- R30 -0000004d: R31 := #0 -00000053: R29 := R31 -0000005a: R29 := mem[R31, el]:u64 -0000005f: R30 := mem[R31 + 8, el]:u64 -00000063: R31 := R31 + 0x10 -00000068: call R30 with noreturn - -0000083b: sub _init(_init_result) -00000859: _init_result :: out u32 = low:32[R0] - -0000075a: -00000760: #10 := R31 - 0x10 -00000766: mem := mem with [#10, el]:u64 <- R29 -0000076c: mem := mem with [#10 + 8, el]:u64 <- R30 -00000770: R31 := #10 -00000776: R29 := R31 -0000077b: R30 := 0x738 -0000077d: call @call_weak_fn with return %0000077f - -0000077f: -00000784: R29 := mem[R31, el]:u64 -00000789: R30 := mem[R31 + 8, el]:u64 -0000078d: R31 := R31 + 0x10 -00000792: call R30 with noreturn - -0000083c: sub _start(_start_result) -0000085a: _start_result :: out u32 = low:32[R0] - -00000210: -00000215: R29 := 0 -0000021a: R30 := 0 -00000220: R5 := R0 -00000227: R1 := mem[R31, el]:u64 -0000022d: R2 := R31 + 8 -00000233: R6 := R31 -00000238: R0 := 0x1F000 -0000023f: R0 := mem[R0 + 0xFD8, el]:u64 -00000244: R3 := 0 -00000249: R4 := 0 -0000024e: R30 := 0x830 -00000251: call @__libc_start_main with return %00000253 - -00000253: -00000256: R30 := 0x834 -00000259: call @abort with return %0000083d - -0000083d: -0000083e: call @call_weak_fn with noreturn - -0000083f: sub abort() - - -00000257: -00000690: R16 := 0x20000 -00000697: R17 := mem[R16 + 0x38, el]:u64 -0000069d: R16 := R16 + 0x38 -000006a2: call R17 with noreturn - -00000840: sub call_weak_fn(call_weak_fn_result) -0000085b: call_weak_fn_result :: out u32 = low:32[R0] - -0000025b: -0000025e: R0 := 0x1F000 -00000265: R0 := mem[R0 + 0xFD0, el]:u64 -0000026b: when R0 = 0 goto %00000269 -00000841: goto %000004f4 - -00000269: -00000271: call R30 with noreturn - -000004f4: -000004f7: goto @__gmon_start__ - -000004f5: -0000067a: R16 := 0x20000 -00000681: R17 := mem[R16 + 0x30, el]:u64 -00000687: R16 := R16 + 0x30 -0000068c: call R17 with noreturn - -00000842: sub deregister_tm_clones(deregister_tm_clones_result) -0000085c: deregister_tm_clones_result :: out u32 = low:32[R0] - -00000277: -0000027a: R0 := 0x20000 -00000280: R0 := R0 + 0x70 -00000285: R1 := 0x20000 -0000028b: R1 := R1 + 0x70 -00000291: #1 := ~R0 -00000296: #2 := R1 + ~R0 -0000029c: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 -000002a2: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 -000002a6: ZF := #2 + 1 = 0 -000002aa: NF := 63:63[#2 + 1] -000002b0: when ZF goto %000002ae -00000843: goto %000004d6 - -000004d6: -000004d9: R1 := 0x1F000 -000004e0: R1 := mem[R1 + 0xFC0, el]:u64 -000004e5: when R1 = 0 goto %000002ae -00000844: goto %000004e9 - -000002ae: -000002b6: call R30 with noreturn - -000004e9: -000004ed: R16 := R1 -000004f2: call R16 with noreturn - -00000845: sub frame_dummy(frame_dummy_result) -0000085d: frame_dummy_result :: out u32 = low:32[R0] - -0000034d: -0000034f: call @register_tm_clones with noreturn - -00000846: sub free(free_ptr) -0000085e: free_ptr :: in out u64 = R0 - -0000043f: -000006bc: R16 := 0x20000 -000006c3: R17 := mem[R16 + 0x48, el]:u64 -000006c9: R16 := R16 + 0x48 -000006ce: call R17 with noreturn - -00000847: sub main(main_argc, main_argv, main_result) -0000085f: main_argc :: in u32 = low:32[R0] -00000860: main_argv :: in out u64 = R1 -00000861: main_result :: out u32 = low:32[R0] - -00000351: -00000355: #4 := R31 - 0x30 -0000035b: mem := mem with [#4, el]:u64 <- R29 -00000361: mem := mem with [#4 + 8, el]:u64 <- R30 -00000365: R31 := #4 -0000036b: #5 := R31 + 0x10 -00000371: mem := mem with [#5, el]:u64 <- R22 -00000377: mem := mem with [#5 + 8, el]:u64 <- R21 -0000037d: #6 := R31 + 0x20 -00000383: mem := mem with [#6, el]:u64 <- R20 -00000389: mem := mem with [#6 + 8, el]:u64 <- R19 -0000038f: R29 := R31 -00000394: R8 := 0x20000 -00000399: R19 := 0x20000 -0000039f: R19 := R19 + 0x61 -000003a5: R0 := R19 -000003ac: R8 := pad:64[mem[R8 + 0x60]] -000003b4: mem := mem with [R19 + 2] <- 7:0[R8] -000003b9: R30 := 0x940 -000003bc: call @strlen with return %000003be - -000003be: -000003c2: R20 := R0 + 1 -000003c8: R0 := R20 -000003cd: R30 := 0x94C -000003d0: call @malloc with return %000003d2 - -000003d2: -000003d5: R22 := 0x20000 -000003db: R1 := R19 -000003e1: R2 := R20 -000003e7: R21 := R0 -000003ef: mem := mem with [R22 + 0x78, el]:u64 <- R0 -000003f4: R30 := 0x964 -000003f7: call @memcpy with return %000003f9 - -000003f9: -000003fd: R0 := R21 -00000402: R30 := 0x96C -00000405: call @puts with return %00000407 - -00000407: -0000040c: R19 := mem[R22 + 0x78, el]:u64 -00000412: R0 := R19 -00000417: R30 := 0x978 -00000419: call @strlen with return %0000041b - -0000041b: -0000041f: R2 := R0 + 1 -00000425: R0 := R19 -0000042a: R1 := 0 -0000042f: R30 := 0x988 -00000432: call @memset with return %00000434 - -00000434: -00000439: R0 := mem[R22 + 0x78, el]:u64 -0000043e: R30 := 0x990 -00000441: call @free with return %00000443 - -00000443: -00000446: R0 := 0 -0000044c: #7 := R31 + 0x20 -00000451: R20 := mem[#7, el]:u64 -00000456: R19 := mem[#7 + 8, el]:u64 -0000045c: #8 := R31 + 0x10 -00000461: R22 := mem[#8, el]:u64 -00000466: R21 := mem[#8 + 8, el]:u64 -0000046d: R29 := mem[R31, el]:u64 -00000472: R30 := mem[R31 + 8, el]:u64 -00000476: R31 := R31 + 0x30 -0000047b: call R30 with noreturn - -00000848: sub malloc(malloc_size, malloc_result) -00000862: malloc_size :: in u64 = R0 -00000863: malloc_result :: out u64 = R0 - -000003ce: -0000064e: R16 := 0x20000 -00000655: R17 := mem[R16 + 0x20, el]:u64 -0000065b: R16 := R16 + 0x20 -00000660: call R17 with noreturn - -00000849: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) -00000864: memcpy_dst :: in out u64 = R0 -00000865: memcpy_src :: in out u64 = R1 -00000866: memcpy_n :: in u64 = R2 -00000867: memcpy_result :: out u64 = R0 - -000003f5: -000005f6: R16 := 0x20000 -000005fd: R17 := mem[R16, el]:u64 -00000603: R16 := R16 -00000608: call R17 with noreturn - -0000084a: sub memset(memset_buf, memset_c, memset_n, memset_result) -00000868: memset_buf :: in out u64 = R0 -00000869: memset_c :: in u32 = low:32[R1] -0000086a: memset_n :: in u64 = R2 -0000086b: memset_result :: out u64 = R0 - -00000430: -00000664: R16 := 0x20000 -0000066b: R17 := mem[R16 + 0x28, el]:u64 -00000671: R16 := R16 + 0x28 -00000676: call R17 with noreturn - -0000084b: sub puts(puts_s, puts_result) -0000086c: puts_s :: in u64 = R0 -0000086d: puts_result :: out u32 = low:32[R0] - -00000403: -000006a6: R16 := 0x20000 -000006ad: R17 := mem[R16 + 0x40, el]:u64 -000006b3: R16 := R16 + 0x40 -000006b8: call R17 with noreturn - -0000084c: sub register_tm_clones(register_tm_clones_result) -0000086e: register_tm_clones_result :: out u32 = low:32[R0] - -000002b8: -000002bb: R0 := 0x20000 -000002c1: R0 := R0 + 0x70 -000002c6: R1 := 0x20000 -000002cc: R1 := R1 + 0x70 -000002d3: R1 := R1 + ~R0 + 1 -000002d9: R2 := 0.63:63[R1] -000002e0: R1 := R2 + (R1 ~>> 3) -000002e6: R1 := extend:64[63:1[R1]] -000002ec: when R1 = 0 goto %000002ea -0000084d: goto %000004b8 - -000004b8: -000004bb: R2 := 0x1F000 -000004c2: R2 := mem[R2 + 0xFE0, el]:u64 -000004c7: when R2 = 0 goto %000002ea -0000084e: goto %000004cb - -000002ea: -000002f2: call R30 with noreturn - -000004cb: -000004cf: R16 := R2 -000004d4: call R16 with noreturn - -0000084f: sub strlen(strlen_s, strlen_result) -0000086f: strlen_s :: in u64 = R0 -00000870: strlen_result :: out u64 = R0 - -000003ba: -0000060c: R16 := 0x20000 -00000613: R17 := mem[R16 + 8, el]:u64 -00000619: R16 := R16 + 8 -0000061e: call R17 with noreturn - diff --git a/examples/simplified_http_parse_basic/example.bpl b/examples/simplified_http_parse_basic/example.bpl deleted file mode 100644 index f51b5c72a..000000000 --- a/examples/simplified_http_parse_basic/example.bpl +++ /dev/null @@ -1,811 +0,0 @@ -var Gamma_R0: bool; -var Gamma_R1: bool; -var Gamma_R16: bool; -var Gamma_R17: bool; -var Gamma_R19: bool; -var Gamma_R2: bool; -var Gamma_R20: bool; -var Gamma_R21: bool; -var Gamma_R22: bool; -var Gamma_R29: bool; -var Gamma_R30: bool; -var Gamma_R31: bool; -var Gamma_R8: bool; -var Gamma_mem: [bv64]bool; -var Gamma_stack: [bv64]bool; -var R0: bv64; -var R1: bv64; -var R16: bv64; -var R17: bv64; -var R19: bv64; -var R2: bv64; -var R20: bv64; -var R21: bv64; -var R22: bv64; -var R29: bv64; -var R30: bv64; -var R31: bv64; -var R8: bv64; -var mem: [bv64]bv8; -var stack: [bv64]bv8; -const $buf_addr: bv64; -axiom ($buf_addr == 131192bv64); -const $password_addr: bv64; -axiom ($password_addr == 131168bv64); -const $stext_addr: bv64; -axiom ($stext_addr == 131169bv64); -function L(memory: [bv64]bv8, index: bv64) returns (bool) { - false -} - -function {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); -function {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); -function {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); -function {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); -function gamma_load32(gammaMap: [bv64]bool, index: bv64) returns (bool) { - (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) -} - -function gamma_load64(gammaMap: [bv64]bool, index: bv64) returns (bool) { - (gammaMap[bvadd64(index, 7bv64)] && (gammaMap[bvadd64(index, 6bv64)] && (gammaMap[bvadd64(index, 5bv64)] && (gammaMap[bvadd64(index, 4bv64)] && (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))))))) -} - -function gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { - gammaMap[index] -} - -function gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - gammaMap[index := value][bvadd64(index, 1bv64) := value][bvadd64(index, 2bv64) := value][bvadd64(index, 3bv64) := value][bvadd64(index, 4bv64) := value][bvadd64(index, 5bv64) := value][bvadd64(index, 6bv64) := value][bvadd64(index, 7bv64) := value] -} - -function gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { - gammaMap[index := value] -} - -function memory_load64_le(memory: [bv64]bv8, index: bv64) returns (bv64) { - (memory[bvadd64(index, 7bv64)] ++ (memory[bvadd64(index, 6bv64)] ++ (memory[bvadd64(index, 5bv64)] ++ (memory[bvadd64(index, 4bv64)] ++ (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))))))) -} - -function memory_load8_le(memory: [bv64]bv8, index: bv64) returns (bv8) { - memory[index] -} - -function memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { - memory[index := value[8:0]][bvadd64(index, 1bv64) := value[16:8]][bvadd64(index, 2bv64) := value[24:16]][bvadd64(index, 3bv64) := value[32:24]][bvadd64(index, 4bv64) := value[40:32]][bvadd64(index, 5bv64) := value[48:40]][bvadd64(index, 6bv64) := value[56:48]][bvadd64(index, 7bv64) := value[64:56]] -} - -function memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { - memory[index := value[8:0]] -} - -function {:bvbuiltin "zero_extend 56"} zero_extend56_8(bv8) returns (bv64); -procedure rely(); - modifies mem, Gamma_mem; - ensures (mem == old(mem)); - ensures (Gamma_mem == old(Gamma_mem)); - free ensures (memory_load8_le(mem, 2488bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2489bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2490bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2491bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 16bv8); - free ensures (memory_load8_le(mem, 130473bv64) == 9bv8); - free ensures (memory_load8_le(mem, 130474bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130475bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130476bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130477bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130478bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130479bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130480bv64) == 192bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 8bv8); - free ensures (memory_load8_le(mem, 130482bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130484bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130485bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130486bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130487bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); - free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); - free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); - -procedure rely_transitive() - modifies mem, Gamma_mem; - ensures (mem == old(mem)); - ensures (Gamma_mem == old(Gamma_mem)); -{ - call rely(); - call rely(); -} - -procedure rely_reflexive(); - -procedure guarantee_reflexive(); - modifies mem, Gamma_mem; - -procedure #free(); - modifies Gamma_R16, Gamma_R17, R16, R17; - requires gamma_load8(Gamma_mem, bvadd64(R0, 0bv64)) == true; - requires gamma_load8(Gamma_mem, bvadd64(R0, 1bv64)) == true; - requires gamma_load8(Gamma_mem, bvadd64(R0, 2bv64)) == true; - requires gamma_load8(Gamma_mem, bvadd64(R0, 3bv64)) == true; - free requires (memory_load8_le(mem, 2488bv64) == 1bv8); - free requires (memory_load8_le(mem, 2489bv64) == 0bv8); - free requires (memory_load8_le(mem, 2490bv64) == 2bv8); - free requires (memory_load8_le(mem, 2491bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 16bv8); - free requires (memory_load8_le(mem, 130473bv64) == 9bv8); - free requires (memory_load8_le(mem, 130474bv64) == 0bv8); - free requires (memory_load8_le(mem, 130475bv64) == 0bv8); - free requires (memory_load8_le(mem, 130476bv64) == 0bv8); - free requires (memory_load8_le(mem, 130477bv64) == 0bv8); - free requires (memory_load8_le(mem, 130478bv64) == 0bv8); - free requires (memory_load8_le(mem, 130479bv64) == 0bv8); - free requires (memory_load8_le(mem, 130480bv64) == 192bv8); - free requires (memory_load8_le(mem, 130481bv64) == 8bv8); - free requires (memory_load8_le(mem, 130482bv64) == 0bv8); - free requires (memory_load8_le(mem, 130483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130484bv64) == 0bv8); - free requires (memory_load8_le(mem, 130485bv64) == 0bv8); - free requires (memory_load8_le(mem, 130486bv64) == 0bv8); - free requires (memory_load8_le(mem, 130487bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 20bv8); - free requires (memory_load8_le(mem, 131033bv64) == 9bv8); - free requires (memory_load8_le(mem, 131034bv64) == 0bv8); - free requires (memory_load8_le(mem, 131035bv64) == 0bv8); - free requires (memory_load8_le(mem, 131036bv64) == 0bv8); - free requires (memory_load8_le(mem, 131037bv64) == 0bv8); - free requires (memory_load8_le(mem, 131038bv64) == 0bv8); - free requires (memory_load8_le(mem, 131039bv64) == 0bv8); - free requires (memory_load8_le(mem, 131160bv64) == 88bv8); - free requires (memory_load8_le(mem, 131161bv64) == 0bv8); - free requires (memory_load8_le(mem, 131162bv64) == 2bv8); - free requires (memory_load8_le(mem, 131163bv64) == 0bv8); - free requires (memory_load8_le(mem, 131164bv64) == 0bv8); - free requires (memory_load8_le(mem, 131165bv64) == 0bv8); - free requires (memory_load8_le(mem, 131166bv64) == 0bv8); - free requires (memory_load8_le(mem, 131167bv64) == 0bv8); - ensures Gamma_R0 == true; - free ensures (memory_load8_le(mem, 2488bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2489bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2490bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2491bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 16bv8); - free ensures (memory_load8_le(mem, 130473bv64) == 9bv8); - free ensures (memory_load8_le(mem, 130474bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130475bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130476bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130477bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130478bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130479bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130480bv64) == 192bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 8bv8); - free ensures (memory_load8_le(mem, 130482bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130484bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130485bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130486bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130487bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); - free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); - free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); - -procedure main() - modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, Gamma_R20, Gamma_R21, Gamma_R22, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, R20, R21, R22, R29, R30, R31, R8, mem, stack; - requires (gamma_load8(Gamma_mem, $password_addr) == false); - requires gamma_load32(Gamma_mem, memory_load64_le(mem, $stext_addr)); - requires R31 == 100bv64; - free requires (memory_load8_le(mem, 131152bv64) == 0bv8); - free requires (memory_load8_le(mem, 131153bv64) == 0bv8); - free requires (memory_load8_le(mem, 131154bv64) == 0bv8); - free requires (memory_load8_le(mem, 131155bv64) == 0bv8); - free requires (memory_load8_le(mem, 131156bv64) == 0bv8); - free requires (memory_load8_le(mem, 131157bv64) == 0bv8); - free requires (memory_load8_le(mem, 131158bv64) == 0bv8); - free requires (memory_load8_le(mem, 131159bv64) == 0bv8); - free requires (memory_load8_le(mem, 131160bv64) == 88bv8); - free requires (memory_load8_le(mem, 131161bv64) == 0bv8); - free requires (memory_load8_le(mem, 131162bv64) == 2bv8); - free requires (memory_load8_le(mem, 131163bv64) == 0bv8); - free requires (memory_load8_le(mem, 131164bv64) == 0bv8); - free requires (memory_load8_le(mem, 131165bv64) == 0bv8); - free requires (memory_load8_le(mem, 131166bv64) == 0bv8); - free requires (memory_load8_le(mem, 131167bv64) == 0bv8); - free requires (memory_load8_le(mem, 131168bv64) == 7bv8); - free requires (memory_load8_le(mem, 131169bv64) == 104bv8); - free requires (memory_load8_le(mem, 131170bv64) == 101bv8); - free requires (memory_load8_le(mem, 131171bv64) == 108bv8); - free requires (memory_load8_le(mem, 131172bv64) == 0bv8); - free requires (memory_load8_le(mem, 131173bv64) == 0bv8); - free requires (memory_load8_le(mem, 131174bv64) == 0bv8); - free requires (memory_load8_le(mem, 131175bv64) == 0bv8); - free requires (memory_load8_le(mem, 131176bv64) == 0bv8); - free requires (memory_load8_le(mem, 131177bv64) == 0bv8); - free requires (memory_load8_le(mem, 131178bv64) == 0bv8); - free requires (memory_load8_le(mem, 131179bv64) == 0bv8); - free requires (memory_load8_le(mem, 2488bv64) == 1bv8); - free requires (memory_load8_le(mem, 2489bv64) == 0bv8); - free requires (memory_load8_le(mem, 2490bv64) == 2bv8); - free requires (memory_load8_le(mem, 2491bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 16bv8); - free requires (memory_load8_le(mem, 130473bv64) == 9bv8); - free requires (memory_load8_le(mem, 130474bv64) == 0bv8); - free requires (memory_load8_le(mem, 130475bv64) == 0bv8); - free requires (memory_load8_le(mem, 130476bv64) == 0bv8); - free requires (memory_load8_le(mem, 130477bv64) == 0bv8); - free requires (memory_load8_le(mem, 130478bv64) == 0bv8); - free requires (memory_load8_le(mem, 130479bv64) == 0bv8); - free requires (memory_load8_le(mem, 130480bv64) == 192bv8); - free requires (memory_load8_le(mem, 130481bv64) == 8bv8); - free requires (memory_load8_le(mem, 130482bv64) == 0bv8); - free requires (memory_load8_le(mem, 130483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130484bv64) == 0bv8); - free requires (memory_load8_le(mem, 130485bv64) == 0bv8); - free requires (memory_load8_le(mem, 130486bv64) == 0bv8); - free requires (memory_load8_le(mem, 130487bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 20bv8); - free requires (memory_load8_le(mem, 131033bv64) == 9bv8); - free requires (memory_load8_le(mem, 131034bv64) == 0bv8); - free requires (memory_load8_le(mem, 131035bv64) == 0bv8); - free requires (memory_load8_le(mem, 131036bv64) == 0bv8); - free requires (memory_load8_le(mem, 131037bv64) == 0bv8); - free requires (memory_load8_le(mem, 131038bv64) == 0bv8); - free requires (memory_load8_le(mem, 131039bv64) == 0bv8); - free requires (memory_load8_le(mem, 131160bv64) == 88bv8); - free requires (memory_load8_le(mem, 131161bv64) == 0bv8); - free requires (memory_load8_le(mem, 131162bv64) == 2bv8); - free requires (memory_load8_le(mem, 131163bv64) == 0bv8); - free requires (memory_load8_le(mem, 131164bv64) == 0bv8); - free requires (memory_load8_le(mem, 131165bv64) == 0bv8); - free requires (memory_load8_le(mem, 131166bv64) == 0bv8); - free requires (memory_load8_le(mem, 131167bv64) == 0bv8); - free ensures (Gamma_R19 == old(Gamma_R19)); - free ensures (Gamma_R20 == old(Gamma_R20)); - free ensures (Gamma_R21 == old(Gamma_R21)); - free ensures (Gamma_R22 == old(Gamma_R22)); - free ensures (Gamma_R29 == old(Gamma_R29)); - free ensures (Gamma_R31 == old(Gamma_R31)); - free ensures (R19 == old(R19)); - free ensures (R20 == old(R20)); - free ensures (R21 == old(R21)); - free ensures (R22 == old(R22)); - free ensures (R29 == old(R29)); - free ensures (R31 == old(R31)); - free ensures (memory_load8_le(mem, 2488bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2489bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2490bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2491bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 16bv8); - free ensures (memory_load8_le(mem, 130473bv64) == 9bv8); - free ensures (memory_load8_le(mem, 130474bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130475bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130476bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130477bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130478bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130479bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130480bv64) == 192bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 8bv8); - free ensures (memory_load8_le(mem, 130482bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130484bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130485bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130486bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130487bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); - free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); - free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); -{ - var #4: bv64; - var #5: bv64; - var #6: bv64; - var #7: bv64; - var #8: bv64; - var Gamma_#4: bool; - var Gamma_#5: bool; - var Gamma_#6: bool; - var Gamma_#7: bool; - var Gamma_#8: bool; - lmain: - #4, Gamma_#4 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); - R31, Gamma_R31 := #4, Gamma_#4; - #5, Gamma_#5 := bvadd64(R31, 16bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #5, R22), gamma_store64(Gamma_stack, #5, Gamma_R22); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#5, 8bv64), R21), gamma_store64(Gamma_stack, bvadd64(#5, 8bv64), Gamma_R21); - #6, Gamma_#6 := bvadd64(R31, 32bv64), Gamma_R31; - stack, Gamma_stack := memory_store64_le(stack, #6, R20), gamma_store64(Gamma_stack, #6, Gamma_R20); - stack, Gamma_stack := memory_store64_le(stack, bvadd64(#6, 8bv64), R19), gamma_store64(Gamma_stack, bvadd64(#6, 8bv64), Gamma_R19); - R29, Gamma_R29 := R31, Gamma_R31; - R8, Gamma_R8 := 131072bv64, true; - R19, Gamma_R19 := 131072bv64, true; - R19, Gamma_R19 := bvadd64(R19, 97bv64), Gamma_R19; - R0, Gamma_R0 := R19, Gamma_R19; - R8, Gamma_R8 := zero_extend56_8(memory_load8_le(mem, bvadd64(R8, 96bv64))), (gamma_load8(Gamma_mem, bvadd64(R8, 96bv64)) || L(mem, bvadd64(R8, 96bv64))); - call rely(); - assert (L(mem, bvadd64(R19, 2bv64)) ==> Gamma_R8); - mem, Gamma_mem := memory_store8_le(mem, bvadd64(R19, 2bv64), R8[8:0]), gamma_store8(Gamma_mem, bvadd64(R19, 2bv64), Gamma_R8); - R30, Gamma_R30 := 2368bv64, true; - call strlen(); - goto l000003be; - l000003be: - R20, Gamma_R20 := bvadd64(R0, 1bv64), Gamma_R0; - R0, Gamma_R0 := R20, Gamma_R20; - R30, Gamma_R30 := 2380bv64, true; - call malloc(); - goto l000003d2; - l000003d2: - R22, Gamma_R22 := 131072bv64, true; - R1, Gamma_R1 := R19, Gamma_R19; - R2, Gamma_R2 := R20, Gamma_R20; - R21, Gamma_R21 := R0, Gamma_R0; - call rely(); - assert (L(mem, bvadd64(R22, 120bv64)) ==> Gamma_R0); - mem, Gamma_mem := memory_store64_le(mem, bvadd64(R22, 120bv64), R0), gamma_store64(Gamma_mem, bvadd64(R22, 120bv64), Gamma_R0); - R30, Gamma_R30 := 2404bv64, true; - call memcpy(); - goto l000003f9; - l000003f9: - R0, Gamma_R0 := R21, Gamma_R21; - R30, Gamma_R30 := 2412bv64, true; - call puts(); - goto l00000407; - l00000407: - R19, Gamma_R19 := memory_load64_le(mem, bvadd64(R22, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R22, 120bv64)) || L(mem, bvadd64(R22, 120bv64))); - R0, Gamma_R0 := R19, Gamma_R19; - R30, Gamma_R30 := 2424bv64, true; - call strlen(); - goto l0000041b; - l0000041b: - R2, Gamma_R2 := bvadd64(R0, 1bv64), Gamma_R0; - R0, Gamma_R0 := R19, Gamma_R19; - R1, Gamma_R1 := 0bv64, true; - R30, Gamma_R30 := 2440bv64, true; - call memset(); - goto l00000434; - l00000434: - R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R22, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R22, 120bv64)) || L(mem, bvadd64(R22, 120bv64))); - R30, Gamma_R30 := 2448bv64, true; - call #free(); - goto l00000443; - l00000443: - R0, Gamma_R0 := 0bv64, true; - #7, Gamma_#7 := bvadd64(R31, 32bv64), Gamma_R31; - R20, Gamma_R20 := memory_load64_le(stack, #7), gamma_load64(Gamma_stack, #7); - R19, Gamma_R19 := memory_load64_le(stack, bvadd64(#7, 8bv64)), gamma_load64(Gamma_stack, bvadd64(#7, 8bv64)); - #8, Gamma_#8 := bvadd64(R31, 16bv64), Gamma_R31; - R22, Gamma_R22 := memory_load64_le(stack, #8), gamma_load64(Gamma_stack, #8); - R21, Gamma_R21 := memory_load64_le(stack, bvadd64(#8, 8bv64)), gamma_load64(Gamma_stack, bvadd64(#8, 8bv64)); - R29, Gamma_R29 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); - R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); - R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; - return; -} - -procedure malloc(); - modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; - free requires (memory_load8_le(mem, 2488bv64) == 1bv8); - free requires (memory_load8_le(mem, 2489bv64) == 0bv8); - free requires (memory_load8_le(mem, 2490bv64) == 2bv8); - free requires (memory_load8_le(mem, 2491bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 16bv8); - free requires (memory_load8_le(mem, 130473bv64) == 9bv8); - free requires (memory_load8_le(mem, 130474bv64) == 0bv8); - free requires (memory_load8_le(mem, 130475bv64) == 0bv8); - free requires (memory_load8_le(mem, 130476bv64) == 0bv8); - free requires (memory_load8_le(mem, 130477bv64) == 0bv8); - free requires (memory_load8_le(mem, 130478bv64) == 0bv8); - free requires (memory_load8_le(mem, 130479bv64) == 0bv8); - free requires (memory_load8_le(mem, 130480bv64) == 192bv8); - free requires (memory_load8_le(mem, 130481bv64) == 8bv8); - free requires (memory_load8_le(mem, 130482bv64) == 0bv8); - free requires (memory_load8_le(mem, 130483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130484bv64) == 0bv8); - free requires (memory_load8_le(mem, 130485bv64) == 0bv8); - free requires (memory_load8_le(mem, 130486bv64) == 0bv8); - free requires (memory_load8_le(mem, 130487bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 20bv8); - free requires (memory_load8_le(mem, 131033bv64) == 9bv8); - free requires (memory_load8_le(mem, 131034bv64) == 0bv8); - free requires (memory_load8_le(mem, 131035bv64) == 0bv8); - free requires (memory_load8_le(mem, 131036bv64) == 0bv8); - free requires (memory_load8_le(mem, 131037bv64) == 0bv8); - free requires (memory_load8_le(mem, 131038bv64) == 0bv8); - free requires (memory_load8_le(mem, 131039bv64) == 0bv8); - free requires (memory_load8_le(mem, 131160bv64) == 88bv8); - free requires (memory_load8_le(mem, 131161bv64) == 0bv8); - free requires (memory_load8_le(mem, 131162bv64) == 2bv8); - free requires (memory_load8_le(mem, 131163bv64) == 0bv8); - free requires (memory_load8_le(mem, 131164bv64) == 0bv8); - free requires (memory_load8_le(mem, 131165bv64) == 0bv8); - free requires (memory_load8_le(mem, 131166bv64) == 0bv8); - free requires (memory_load8_le(mem, 131167bv64) == 0bv8); - ensures (((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)))) && (memory_load8_le(mem, $stext_addr) == old(memory_load8_le(mem, $stext_addr)))); - ensures R0 == 990000000bv64; - ensures Gamma_R0 == true; - free ensures (memory_load8_le(mem, 2488bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2489bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2490bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2491bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 16bv8); - free ensures (memory_load8_le(mem, 130473bv64) == 9bv8); - free ensures (memory_load8_le(mem, 130474bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130475bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130476bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130477bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130478bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130479bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130480bv64) == 192bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 8bv8); - free ensures (memory_load8_le(mem, 130482bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130484bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130485bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130486bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130487bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); - free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); - free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); - -procedure memcpy(); - modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - free requires (memory_load8_le(mem, 2488bv64) == 1bv8); - free requires (memory_load8_le(mem, 2489bv64) == 0bv8); - free requires (memory_load8_le(mem, 2490bv64) == 2bv8); - free requires (memory_load8_le(mem, 2491bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 16bv8); - free requires (memory_load8_le(mem, 130473bv64) == 9bv8); - free requires (memory_load8_le(mem, 130474bv64) == 0bv8); - free requires (memory_load8_le(mem, 130475bv64) == 0bv8); - free requires (memory_load8_le(mem, 130476bv64) == 0bv8); - free requires (memory_load8_le(mem, 130477bv64) == 0bv8); - free requires (memory_load8_le(mem, 130478bv64) == 0bv8); - free requires (memory_load8_le(mem, 130479bv64) == 0bv8); - free requires (memory_load8_le(mem, 130480bv64) == 192bv8); - free requires (memory_load8_le(mem, 130481bv64) == 8bv8); - free requires (memory_load8_le(mem, 130482bv64) == 0bv8); - free requires (memory_load8_le(mem, 130483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130484bv64) == 0bv8); - free requires (memory_load8_le(mem, 130485bv64) == 0bv8); - free requires (memory_load8_le(mem, 130486bv64) == 0bv8); - free requires (memory_load8_le(mem, 130487bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 20bv8); - free requires (memory_load8_le(mem, 131033bv64) == 9bv8); - free requires (memory_load8_le(mem, 131034bv64) == 0bv8); - free requires (memory_load8_le(mem, 131035bv64) == 0bv8); - free requires (memory_load8_le(mem, 131036bv64) == 0bv8); - free requires (memory_load8_le(mem, 131037bv64) == 0bv8); - free requires (memory_load8_le(mem, 131038bv64) == 0bv8); - free requires (memory_load8_le(mem, 131039bv64) == 0bv8); - free requires (memory_load8_le(mem, 131160bv64) == 88bv8); - free requires (memory_load8_le(mem, 131161bv64) == 0bv8); - free requires (memory_load8_le(mem, 131162bv64) == 2bv8); - free requires (memory_load8_le(mem, 131163bv64) == 0bv8); - free requires (memory_load8_le(mem, 131164bv64) == 0bv8); - free requires (memory_load8_le(mem, 131165bv64) == 0bv8); - free requires (memory_load8_le(mem, 131166bv64) == 0bv8); - free requires (memory_load8_le(mem, 131167bv64) == 0bv8); - ensures (((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)))) && (memory_load8_le(mem, $stext_addr) == old(memory_load8_le(mem, $stext_addr)))); - ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then gamma_load8(old(Gamma_mem), bvadd64(bvsub64(i, R0), R1)) else old(gamma_load8(Gamma_mem, i)))); - 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)))); - free ensures (memory_load8_le(mem, 2488bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2489bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2490bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2491bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 16bv8); - free ensures (memory_load8_le(mem, 130473bv64) == 9bv8); - free ensures (memory_load8_le(mem, 130474bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130475bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130476bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130477bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130478bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130479bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130480bv64) == 192bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 8bv8); - free ensures (memory_load8_le(mem, 130482bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130484bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130485bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130486bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130487bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); - free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); - free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); - -procedure memset(); - modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; - free requires (memory_load8_le(mem, 2488bv64) == 1bv8); - free requires (memory_load8_le(mem, 2489bv64) == 0bv8); - free requires (memory_load8_le(mem, 2490bv64) == 2bv8); - free requires (memory_load8_le(mem, 2491bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 16bv8); - free requires (memory_load8_le(mem, 130473bv64) == 9bv8); - free requires (memory_load8_le(mem, 130474bv64) == 0bv8); - free requires (memory_load8_le(mem, 130475bv64) == 0bv8); - free requires (memory_load8_le(mem, 130476bv64) == 0bv8); - free requires (memory_load8_le(mem, 130477bv64) == 0bv8); - free requires (memory_load8_le(mem, 130478bv64) == 0bv8); - free requires (memory_load8_le(mem, 130479bv64) == 0bv8); - free requires (memory_load8_le(mem, 130480bv64) == 192bv8); - free requires (memory_load8_le(mem, 130481bv64) == 8bv8); - free requires (memory_load8_le(mem, 130482bv64) == 0bv8); - free requires (memory_load8_le(mem, 130483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130484bv64) == 0bv8); - free requires (memory_load8_le(mem, 130485bv64) == 0bv8); - free requires (memory_load8_le(mem, 130486bv64) == 0bv8); - free requires (memory_load8_le(mem, 130487bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 20bv8); - free requires (memory_load8_le(mem, 131033bv64) == 9bv8); - free requires (memory_load8_le(mem, 131034bv64) == 0bv8); - free requires (memory_load8_le(mem, 131035bv64) == 0bv8); - free requires (memory_load8_le(mem, 131036bv64) == 0bv8); - free requires (memory_load8_le(mem, 131037bv64) == 0bv8); - free requires (memory_load8_le(mem, 131038bv64) == 0bv8); - free requires (memory_load8_le(mem, 131039bv64) == 0bv8); - free requires (memory_load8_le(mem, 131160bv64) == 88bv8); - free requires (memory_load8_le(mem, 131161bv64) == 0bv8); - free requires (memory_load8_le(mem, 131162bv64) == 2bv8); - free requires (memory_load8_le(mem, 131163bv64) == 0bv8); - free requires (memory_load8_le(mem, 131164bv64) == 0bv8); - free requires (memory_load8_le(mem, 131165bv64) == 0bv8); - free requires (memory_load8_le(mem, 131166bv64) == 0bv8); - free requires (memory_load8_le(mem, 131167bv64) == 0bv8); - ensures (((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)))) && (memory_load8_le(mem, $stext_addr) == old(memory_load8_le(mem, $stext_addr)))); - ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then Gamma_R1 else old(Gamma_mem[i]))); - 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)))); - free ensures (memory_load8_le(mem, 2488bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2489bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2490bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2491bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 16bv8); - free ensures (memory_load8_le(mem, 130473bv64) == 9bv8); - free ensures (memory_load8_le(mem, 130474bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130475bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130476bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130477bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130478bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130479bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130480bv64) == 192bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 8bv8); - free ensures (memory_load8_le(mem, 130482bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130484bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130485bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130486bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130487bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); - free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); - free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); - -procedure puts(); - modifies Gamma_R16, Gamma_R17, R16, R17; - free requires (memory_load8_le(mem, 2488bv64) == 1bv8); - free requires (memory_load8_le(mem, 2489bv64) == 0bv8); - free requires (memory_load8_le(mem, 2490bv64) == 2bv8); - free requires (memory_load8_le(mem, 2491bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 16bv8); - free requires (memory_load8_le(mem, 130473bv64) == 9bv8); - free requires (memory_load8_le(mem, 130474bv64) == 0bv8); - free requires (memory_load8_le(mem, 130475bv64) == 0bv8); - free requires (memory_load8_le(mem, 130476bv64) == 0bv8); - free requires (memory_load8_le(mem, 130477bv64) == 0bv8); - free requires (memory_load8_le(mem, 130478bv64) == 0bv8); - free requires (memory_load8_le(mem, 130479bv64) == 0bv8); - free requires (memory_load8_le(mem, 130480bv64) == 192bv8); - free requires (memory_load8_le(mem, 130481bv64) == 8bv8); - free requires (memory_load8_le(mem, 130482bv64) == 0bv8); - free requires (memory_load8_le(mem, 130483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130484bv64) == 0bv8); - free requires (memory_load8_le(mem, 130485bv64) == 0bv8); - free requires (memory_load8_le(mem, 130486bv64) == 0bv8); - free requires (memory_load8_le(mem, 130487bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 20bv8); - free requires (memory_load8_le(mem, 131033bv64) == 9bv8); - free requires (memory_load8_le(mem, 131034bv64) == 0bv8); - free requires (memory_load8_le(mem, 131035bv64) == 0bv8); - free requires (memory_load8_le(mem, 131036bv64) == 0bv8); - free requires (memory_load8_le(mem, 131037bv64) == 0bv8); - free requires (memory_load8_le(mem, 131038bv64) == 0bv8); - free requires (memory_load8_le(mem, 131039bv64) == 0bv8); - free requires (memory_load8_le(mem, 131160bv64) == 88bv8); - free requires (memory_load8_le(mem, 131161bv64) == 0bv8); - free requires (memory_load8_le(mem, 131162bv64) == 2bv8); - free requires (memory_load8_le(mem, 131163bv64) == 0bv8); - free requires (memory_load8_le(mem, 131164bv64) == 0bv8); - free requires (memory_load8_le(mem, 131165bv64) == 0bv8); - free requires (memory_load8_le(mem, 131166bv64) == 0bv8); - free requires (memory_load8_le(mem, 131167bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2488bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2489bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2490bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2491bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 16bv8); - free ensures (memory_load8_le(mem, 130473bv64) == 9bv8); - free ensures (memory_load8_le(mem, 130474bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130475bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130476bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130477bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130478bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130479bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130480bv64) == 192bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 8bv8); - free ensures (memory_load8_le(mem, 130482bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130484bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130485bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130486bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130487bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); - free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); - free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); - -procedure strlen(); - modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; - requires (memory_load8_le(mem, R0) == 0bv8) || (memory_load8_le(mem, bvadd64(R0, 1bv64)) == 0bv8)|| (memory_load8_le(mem, bvadd64(R0, 2bv64)) == 0bv8)|| (memory_load8_le(mem, bvadd64(R0, 3bv64)) == 0bv8); - free requires (memory_load8_le(mem, 2488bv64) == 1bv8); - free requires (memory_load8_le(mem, 2489bv64) == 0bv8); - free requires (memory_load8_le(mem, 2490bv64) == 2bv8); - free requires (memory_load8_le(mem, 2491bv64) == 0bv8); - free requires (memory_load8_le(mem, 130472bv64) == 16bv8); - free requires (memory_load8_le(mem, 130473bv64) == 9bv8); - free requires (memory_load8_le(mem, 130474bv64) == 0bv8); - free requires (memory_load8_le(mem, 130475bv64) == 0bv8); - free requires (memory_load8_le(mem, 130476bv64) == 0bv8); - free requires (memory_load8_le(mem, 130477bv64) == 0bv8); - free requires (memory_load8_le(mem, 130478bv64) == 0bv8); - free requires (memory_load8_le(mem, 130479bv64) == 0bv8); - free requires (memory_load8_le(mem, 130480bv64) == 192bv8); - free requires (memory_load8_le(mem, 130481bv64) == 8bv8); - free requires (memory_load8_le(mem, 130482bv64) == 0bv8); - free requires (memory_load8_le(mem, 130483bv64) == 0bv8); - free requires (memory_load8_le(mem, 130484bv64) == 0bv8); - free requires (memory_load8_le(mem, 130485bv64) == 0bv8); - free requires (memory_load8_le(mem, 130486bv64) == 0bv8); - free requires (memory_load8_le(mem, 130487bv64) == 0bv8); - free requires (memory_load8_le(mem, 131032bv64) == 20bv8); - free requires (memory_load8_le(mem, 131033bv64) == 9bv8); - free requires (memory_load8_le(mem, 131034bv64) == 0bv8); - free requires (memory_load8_le(mem, 131035bv64) == 0bv8); - free requires (memory_load8_le(mem, 131036bv64) == 0bv8); - free requires (memory_load8_le(mem, 131037bv64) == 0bv8); - free requires (memory_load8_le(mem, 131038bv64) == 0bv8); - free requires (memory_load8_le(mem, 131039bv64) == 0bv8); - free requires (memory_load8_le(mem, 131160bv64) == 88bv8); - free requires (memory_load8_le(mem, 131161bv64) == 0bv8); - free requires (memory_load8_le(mem, 131162bv64) == 2bv8); - free requires (memory_load8_le(mem, 131163bv64) == 0bv8); - free requires (memory_load8_le(mem, 131164bv64) == 0bv8); - free requires (memory_load8_le(mem, 131165bv64) == 0bv8); - free requires (memory_load8_le(mem, 131166bv64) == 0bv8); - free requires (memory_load8_le(mem, 131167bv64) == 0bv8); - ensures (((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)))) && (memory_load8_le(mem, $stext_addr) == old(memory_load8_le(mem, $stext_addr)))); - 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))); - free ensures (memory_load8_le(mem, 2488bv64) == 1bv8); - free ensures (memory_load8_le(mem, 2489bv64) == 0bv8); - free ensures (memory_load8_le(mem, 2490bv64) == 2bv8); - free ensures (memory_load8_le(mem, 2491bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130472bv64) == 16bv8); - free ensures (memory_load8_le(mem, 130473bv64) == 9bv8); - free ensures (memory_load8_le(mem, 130474bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130475bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130476bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130477bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130478bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130479bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130480bv64) == 192bv8); - free ensures (memory_load8_le(mem, 130481bv64) == 8bv8); - free ensures (memory_load8_le(mem, 130482bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130483bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130484bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130485bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130486bv64) == 0bv8); - free ensures (memory_load8_le(mem, 130487bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); - free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); - free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); - free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); - free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); - free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); - diff --git a/examples/simplified_http_parse_basic/example.relf b/examples/simplified_http_parse_basic/example.relf deleted file mode 100644 index be671042a..000000000 --- a/examples/simplified_http_parse_basic/example.relf +++ /dev/null @@ -1,162 +0,0 @@ - -Relocation section '.rela.dyn' at offset 0x578 contains 8 entries: - Offset Info Type Symbol's Value Symbol's Name + Addend -000000000001fda8 0000000000000403 R_AARCH64_RELATIVE 910 -000000000001fdb0 0000000000000403 R_AARCH64_RELATIVE 8c0 -000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 914 -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 0x638 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: 0000000000000728 0 SECTION LOCAL DEFAULT 12 .init - 2: 0000000000020050 0 SECTION LOCAL DEFAULT 24 .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 116 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 .hash - 5: 00000000000002e8 0 SECTION LOCAL DEFAULT 5 .gnu.hash - 6: 0000000000000308 0 SECTION LOCAL DEFAULT 6 .dynsym - 7: 0000000000000470 0 SECTION LOCAL DEFAULT 7 .dynstr - 8: 000000000000052a 0 SECTION LOCAL DEFAULT 8 .gnu.version - 9: 0000000000000548 0 SECTION LOCAL DEFAULT 9 .gnu.version_r - 10: 0000000000000578 0 SECTION LOCAL DEFAULT 10 .rela.dyn - 11: 0000000000000638 0 SECTION LOCAL DEFAULT 11 .rela.plt - 12: 0000000000000728 0 SECTION LOCAL DEFAULT 12 .init - 13: 0000000000000740 0 SECTION LOCAL DEFAULT 13 .plt - 14: 0000000000000800 0 SECTION LOCAL DEFAULT 14 .text - 15: 00000000000009a4 0 SECTION LOCAL DEFAULT 15 .fini - 16: 00000000000009b8 0 SECTION LOCAL DEFAULT 16 .rodata - 17: 00000000000009bc 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr - 18: 00000000000009f8 0 SECTION LOCAL DEFAULT 18 .eh_frame - 19: 000000000001fda8 0 SECTION LOCAL DEFAULT 19 .init_array - 20: 000000000001fdb0 0 SECTION LOCAL DEFAULT 20 .fini_array - 21: 000000000001fdb8 0 SECTION LOCAL DEFAULT 21 .dynamic - 22: 000000000001ffb8 0 SECTION LOCAL DEFAULT 22 .got - 23: 000000000001ffe8 0 SECTION LOCAL DEFAULT 23 .got.plt - 24: 0000000000020050 0 SECTION LOCAL DEFAULT 24 .data - 25: 0000000000020070 0 SECTION LOCAL DEFAULT 25 .bss - 26: 0000000000000000 0 SECTION LOCAL DEFAULT 26 .comment - 27: 0000000000000000 0 SECTION LOCAL DEFAULT 27 .debug_info - 28: 0000000000000000 0 SECTION LOCAL DEFAULT 28 .debug_abbrev - 29: 0000000000000000 0 SECTION LOCAL DEFAULT 29 .debug_line - 30: 0000000000000000 0 SECTION LOCAL DEFAULT 30 .debug_str - 31: 0000000000000000 0 SECTION LOCAL DEFAULT 31 .debug_addr - 32: 0000000000000000 0 SECTION LOCAL DEFAULT 32 .debug_line_str - 33: 0000000000000000 0 SECTION LOCAL DEFAULT 33 .debug_loclists - 34: 0000000000000000 0 SECTION LOCAL DEFAULT 34 .debug_str_offsets - 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o - 36: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d - 37: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag - 38: 0000000000000800 0 NOTYPE LOCAL DEFAULT 14 $x - 39: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 18 $d - 40: 00000000000009b8 0 NOTYPE LOCAL DEFAULT 16 $d - 41: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o - 42: 0000000000000834 0 NOTYPE LOCAL DEFAULT 14 $x - 43: 0000000000000834 20 FUNC LOCAL DEFAULT 14 call_weak_fn - 44: 0000000000000728 0 NOTYPE LOCAL DEFAULT 12 $x - 45: 00000000000009a4 0 NOTYPE LOCAL DEFAULT 15 $x - 46: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o - 47: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x - 48: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 15 $x - 49: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 50: 0000000000000850 0 NOTYPE LOCAL DEFAULT 14 $x - 51: 0000000000000850 0 FUNC LOCAL DEFAULT 14 deregister_tm_clones - 52: 0000000000000880 0 FUNC LOCAL DEFAULT 14 register_tm_clones - 53: 0000000000020058 0 NOTYPE LOCAL DEFAULT 24 $d - 54: 00000000000008c0 0 FUNC LOCAL DEFAULT 14 __do_global_dtors_aux - 55: 0000000000020070 1 OBJECT LOCAL DEFAULT 25 completed.0 - 56: 000000000001fdb0 0 NOTYPE LOCAL DEFAULT 20 $d - 57: 000000000001fdb0 0 OBJECT LOCAL DEFAULT 20 __do_global_dtors_aux_fini_array_entry - 58: 0000000000000910 0 FUNC LOCAL DEFAULT 14 frame_dummy - 59: 000000000001fda8 0 NOTYPE LOCAL DEFAULT 19 $d - 60: 000000000001fda8 0 OBJECT LOCAL DEFAULT 19 __frame_dummy_init_array_entry - 61: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 18 $d - 62: 0000000000020070 0 NOTYPE LOCAL DEFAULT 25 $d - 63: 0000000000000000 0 FILE LOCAL DEFAULT ABS example.c - 64: 0000000000000914 0 NOTYPE LOCAL DEFAULT 14 $x.0 - 65: 0000000000020060 0 NOTYPE LOCAL DEFAULT 24 $d.1 - 66: 0000000000020078 0 NOTYPE LOCAL DEFAULT 25 $d.2 - 67: 0000000000000000 0 NOTYPE LOCAL DEFAULT 33 $d.3 - 68: 0000000000000000 0 NOTYPE LOCAL DEFAULT 28 $d.4 - 69: 0000000000000000 0 NOTYPE LOCAL DEFAULT 27 $d.5 - 70: 0000000000000000 0 NOTYPE LOCAL DEFAULT 34 $d.6 - 71: 0000000000000000 0 NOTYPE LOCAL DEFAULT 30 $d.7 - 72: 0000000000000000 0 NOTYPE LOCAL DEFAULT 31 $d.8 - 73: 000000000000002a 0 NOTYPE LOCAL DEFAULT 26 $d.9 - 74: 0000000000000a80 0 NOTYPE LOCAL DEFAULT 18 $d.10 - 75: 0000000000000000 0 NOTYPE LOCAL DEFAULT 29 $d.11 - 76: 0000000000000000 0 NOTYPE LOCAL DEFAULT 32 $d.12 - 77: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c - 78: 0000000000000ac8 0 NOTYPE LOCAL DEFAULT 18 $d - 79: 0000000000000ac8 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ - 80: 0000000000000000 0 FILE LOCAL DEFAULT ABS - 81: 000000000001fdb8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC - 82: 00000000000009bc 0 NOTYPE LOCAL DEFAULT 17 __GNU_EH_FRAME_HDR - 83: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ - 84: 0000000000000740 0 NOTYPE LOCAL DEFAULT 13 $x - 85: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 - 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 - 87: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 - 88: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable - 89: 0000000000020050 0 NOTYPE WEAK DEFAULT 24 data_start - 90: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 25 __bss_start__ - 91: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 - 92: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 _bss_end__ - 93: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 _edata - 94: 00000000000009a4 0 FUNC GLOBAL HIDDEN 15 _fini - 95: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 __bss_end__ - 96: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 - 97: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 - 98: 0000000000020060 1 OBJECT GLOBAL DEFAULT 24 password - 99: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 24 __data_start - 100: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ - 101: 0000000000020058 0 OBJECT GLOBAL HIDDEN 24 __dso_handle - 102: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 - 103: 00000000000009b8 4 OBJECT GLOBAL DEFAULT 16 _IO_stdin_used - 104: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 - 105: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 _end - 106: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 - 107: 0000000000000800 52 FUNC GLOBAL DEFAULT 14 _start - 108: 0000000000020078 8 OBJECT GLOBAL DEFAULT 25 buf - 109: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 __end__ - 110: 0000000000020061 11 OBJECT GLOBAL DEFAULT 24 stext - 111: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 25 __bss_start - 112: 0000000000000914 144 FUNC GLOBAL DEFAULT 14 main - 113: 0000000000020070 0 OBJECT GLOBAL HIDDEN 24 __TMC_END__ - 114: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable - 115: 0000000000000728 0 FUNC GLOBAL HIDDEN 12 _init - diff --git a/examples/simplified_http_parse_basic/example.spec b/examples/simplified_http_parse_basic/example.spec deleted file mode 100644 index bd505ed0d..000000000 --- a/examples/simplified_http_parse_basic/example.spec +++ /dev/null @@ -1,53 +0,0 @@ -Globals: -password: char -buf: long -stext: char[11] - - -DIRECT functions: gamma_load64, gamma_load8, memory_load8_le, bvult64, bvule64, bvsub64, gamma_load32 - - -Subroutine: #free - Requires DIRECT: "gamma_load8(Gamma_mem, bvadd64(R0, 0bv64)) == true" - Requires DIRECT: "gamma_load8(Gamma_mem, bvadd64(R0, 1bv64)) == true" - Requires DIRECT: "gamma_load8(Gamma_mem, bvadd64(R0, 2bv64)) == true" - Requires DIRECT: "gamma_load8(Gamma_mem, bvadd64(R0, 3bv64)) == true" - Ensures DIRECT: "Gamma_R0 == true" - - -Subroutine: main -Requires: Gamma_password == false -Requires DIRECT: "gamma_load32(Gamma_mem, memory_load64_le(mem, $stext_addr))" -Requires DIRECT: "R31 == 100bv64" - -Subroutine: malloc -Modifies: R0 -Ensures: buf == old(buf) && password == old(password) && stext==old(stext) -// modifies R0, Gamma_R0; -Ensures DIRECT: "R0 == 990000000bv64" -Ensures DIRECT: "Gamma_R0 == true" - - -Subroutine: memcpy - Modifies: mem - Ensures: buf == old(buf) && password == old(password) && stext==old(stext) - Ensures DIRECT: "(forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then gamma_load8(old(Gamma_mem), bvadd64(bvsub64(i, R0), R1)) else old(gamma_load8(Gamma_mem, i))))" - 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))))" - -// forall i <= n, Gamma_mem[R0] low -Subroutine: memset - Modifies: mem - Ensures: buf == old(buf) && password == old(password) && stext==old(stext) - 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])))" - 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))))" - - -Subroutine: strlen - Modifies: R0 - Requires DIRECT: "(memory_load8_le(mem, R0) == 0bv8) || (memory_load8_le(mem, bvadd64(R0, 1bv64)) == 0bv8)|| (memory_load8_le(mem, bvadd64(R0, 2bv64)) == 0bv8)|| (memory_load8_le(mem, bvadd64(R0, 3bv64)) == 0bv8)" - Ensures: buf == old(buf) && password == old(password) && stext==old(stext) - Ensures DIRECT: "Gamma_R0 == true" - Ensures DIRECT: "(forall i: bv64 :: (bvule64(old(R0), i)) && (bvult64(i, bvadd64(old(R0), R0))) ==> mem[i] != 0bv8)" - Ensures DIRECT: "(memory_load8_le(mem, bvadd64(old(R0), R0)) == 0bv8)" - Ensures DIRECT: "(bvule64(old(R0), bvadd64(old(R0), R0)))" - diff --git a/examples/simplified_http_parse_basic/malloc.md b/examples/simplified_http_parse_basic/malloc.md deleted file mode 100644 index 6d62aedb8..000000000 --- a/examples/simplified_http_parse_basic/malloc.md +++ /dev/null @@ -1,26 +0,0 @@ - -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 deleted file mode 100644 index 0fdea8641..000000000 --- a/examples/simplified_http_parse_basic/string-specs.md +++ /dev/null @@ -1,84 +0,0 @@ -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 memory access rather than the quantification bound. - -```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 diff --git a/src/test/Makefile b/src/test/Makefile new file mode 100644 index 000000000..abbbaf9b2 --- /dev/null +++ b/src/test/Makefile @@ -0,0 +1,12 @@ +TARGETSS := all verify clean cleanall cleanlift recompile + +SUBTARGETS = $(wildcard correct/*/ incorrect/*/) +.PHONY : $(TARGETSS) $(SUBTARGETS) correct incorrect + +$(TARGETSS): $(SUBTARGETS) + +correct: $(realpath $(wildcard correct/*)) +incorrect: $(realpath $(wildcard incorrect/*)) + +$(SUBTARGETS): + -$(MAKE) -C $@ -f $(realpath ./make/lift-directories.mk) $(MAKECMDGOALS) diff --git a/src/test/correct/arrays_simple/config.mk b/src/test/correct/arrays_simple/config.mk new file mode 100644 index 000000000..4a3bcb513 --- /dev/null +++ b/src/test/correct/arrays_simple/config.mk @@ -0,0 +1 @@ +ENABLED_COMPILERS = clang clang_O2 clang_pic clang_no_plt_no_pic gcc gcc_O2 gcc_pic diff --git a/src/test/correct/jumptable/config.mk b/src/test/correct/jumptable/config.mk new file mode 100644 index 000000000..4a3bcb513 --- /dev/null +++ b/src/test/correct/jumptable/config.mk @@ -0,0 +1 @@ +ENABLED_COMPILERS = clang clang_O2 clang_pic clang_no_plt_no_pic gcc gcc_O2 gcc_pic diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..483b4d70d --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,742 @@ +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 2456 20 2456)\n(code-region 2048 408 2048)\n(code-region 1856 192 1856)\n(code-region 1832 24 1832)\n(code-start 2100)\n(code-start 2048)\n(code-start 2324)\n(entry-point 2048)\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 1832 0)\n(llvm:code-entry main 2324 132)\n(llvm:code-entry _start 2048 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 2456 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 2320 0)\n(llvm:code-entry __do_global_dtors_aux 2240 0)\n(llvm:code-entry register_tm_clones 2176 0)\n(llvm:code-entry deregister_tm_clones 2128 0)\n(llvm:code-entry call_weak_fn 2100 20)\n(llvm:code-entry .fini 2456 20)\n(llvm:code-entry .text 2048 408)\n(llvm:code-entry .plt 1856 192)\n(llvm:code-entry .init 1832 24)\n(llvm:elf-program-header 08 64952 584)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2480 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64968 496)\n(llvm:elf-program-header 03 64952 692)\n(llvm:elf-program-header 02 0 2752)\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 130488 584)\n(llvm:elf-virtual-program-header 07 0 0)\n(llvm:elf-virtual-program-header 06 2480 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130504 496)\n(llvm:elf-virtual-program-header 03 130488 712)\n(llvm:elf-virtual-program-header 02 0 2752)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 2048)\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 68820)\n(llvm:section-entry .strtab 0 716 68104)\n(llvm:section-entry .symtab 0 2400 65704)\n(llvm:section-entry .comment 0 58 65644)\n(llvm:section-entry .bss 131184 16 65644)\n(llvm:section-entry .data 131152 28 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130504 496 64968)\n(llvm:section-entry .fini_array 130496 8 64960)\n(llvm:section-entry .init_array 130488 8 64952)\n(llvm:section-entry .eh_frame 2544 208 2544)\n(llvm:section-entry .eh_frame_hdr 2480 60 2480)\n(llvm:section-entry .rodata 2476 4 2476)\n(llvm:section-entry .fini 2456 20 2456)\n(llvm:section-entry .text 2048 408 2048)\n(llvm:section-entry .plt 1856 192 1856)\n(llvm:section-entry .init 1832 24 1832)\n(llvm:section-entry .rela.plt 1592 240 1592)\n(llvm:section-entry .rela.dyn 1400 192 1400)\n(llvm:section-entry .gnu.version_r 1352 48 1352)\n(llvm:section-entry .gnu.version 1316 30 1316)\n(llvm:section-entry .dynstr 1136 179 1136)\n(llvm:section-entry .dynsym 776 360 776)\n(llvm:section-entry .gnu.hash 744 28 744)\n(llvm:section-entry .hash 664 80 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 .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 1832 0 1832 1832)\n(llvm:symbol-entry main 2324 132 2324 2324)\n(llvm:symbol-entry _start 2048 52 2048 2048)\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 2456 0 2456 2456)\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 2320 0 2320 2320)\n(llvm:symbol-entry __do_global_dtors_aux 2240 0 2240 2240)\n(llvm:symbol-entry register_tm_clones 2176 0 2176 2176)\n(llvm:symbol-entry deregister_tm_clones 2128 0 2128 2128)\n(llvm:symbol-entry call_weak_fn 2100 20 2100 2100)\n(mapped 0 2752 0)\n(mapped 130488 692 64952)\n(named-region 0 2752 02)\n(named-region 130488 712 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 80 .hash)\n(named-region 744 28 .gnu.hash)\n(named-region 776 360 .dynsym)\n(named-region 1136 179 .dynstr)\n(named-region 1316 30 .gnu.version)\n(named-region 1352 48 .gnu.version_r)\n(named-region 1400 192 .rela.dyn)\n(named-region 1592 240 .rela.plt)\n(named-region 1832 24 .init)\n(named-region 1856 192 .plt)\n(named-region 2048 408 .text)\n(named-region 2456 20 .fini)\n(named-region 2476 4 .rodata)\n(named-region 2480 60 .eh_frame_hdr)\n(named-region 2544 208 .eh_frame)\n(named-region 130488 8 .init_array)\n(named-region 130496 8 .fini_array)\n(named-region 130504 496 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 28 .data)\n(named-region 131184 16 .bss)\n(named-region 0 58 .comment)\n(named-region 0 2400 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2100 call_weak_fn)\n(named-symbol 2128 deregister_tm_clones)\n(named-symbol 2176 register_tm_clones)\n(named-symbol 2240 __do_global_dtors_aux)\n(named-symbol 2320 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 2456 _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 2048 _start)\n(named-symbol 2324 main)\n(named-symbol 1832 _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 80)\n(section 744 28)\n(section 776 360)\n(section 1136 179)\n(section 1316 30)\n(section 1352 48)\n(section 1400 192)\n(section 1592 240)\n(section 1832 24)\n(section 1856 192)\n(section 2048 408)\n(section 2456 20)\n(section 2476 4)\n(section 2480 60)\n(section 2544 208)\n(section 130488 8)\n(section 130496 8)\n(section 130504 496)\n(section 131000 48)\n(section 131048 104)\n(section 131152 28)\n(section 131184 16)\n(section 0 58)\n(section 0 2400)\n(section 0 716)\n(section 0 259)\n(segment 0 2752 true false true)\n(segment 130488 712 true true false)\n(subarch v8)\n(symbol-chunk 2100 20 2100)\n(symbol-chunk 2048 52 2048)\n(symbol-chunk 2324 132 2324)\n(symbol-value 2100 2100)\n(symbol-value 2128 2128)\n(symbol-value 2176 2176)\n(symbol-value 2240 2240)\n(symbol-value 2320 2320)\n(symbol-value 2456 2456)\n(symbol-value 2048 2048)\n(symbol-value 2324 2324)\n(symbol-value 1832 1832)\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xd8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1e\x00\x1d\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\xc0\x0a\x00\x00\x00\x00\x00\x00\xc0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xd8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1e\x00\x1d\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\xc0\x0a\x00\x00\x00\x00\x00\x00\xc0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\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\xf0\x01\x00\x00\x00\x00\x00\x00\xf0\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\xb0\x09\x00\x00\x00\x00\x00\x00\xb0\x09\x00\x00\x00\x00\x00\x00\xb0\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\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\x48\x02\x00\x00\x00\x00\x00\x00\x48\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\x04\x0b\xe4\xbb\x89\x3b\x0a\xd5\xd2\xae\xa0\x3d\x1e\x08\x67\x4c\x52\x3d\x90\xcc\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\x03\x00\x00\x00\x0f\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xd8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1e\x00\x1d\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\xc0\x0a\x00\x00\x00\x00\x00\x00\xc0\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\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\xf0\x01\x00\x00\x00\x00\x00\x00\xf0\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\xb0\x09\x00\x00\x00\x00\x00\x00\xb0\x09\x00\x00\x00\x00\x00\x00\xb0\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\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\x48\x02\x00\x00\x00\x00\x00\x00\x48\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\x04\x0b\xe4\xbb\x89\x3b\x0a\xd5\xd2\xae\xa0\x3d\x1e\x08\x67\x4c\x52\x3d\x90\xcc\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\x03\x00\x00\x00\x0f\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x06\x00\x00\x00\x0c\x00\x00\x00\x0d\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\x0c\x00\x28\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x18\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\xb8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x10\x09\x00\x00\x00\x00\x00\x00\xc0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xc0\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x14\x09\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\x40\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\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\xd5\xff\xff\x97\xe8\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xe0\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc2\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\xa9\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xc2\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\xf5\x0b\x00\xf9\xf4\x4f\x02\xa9\xfd\x03\x00\x91\x60\x01\x80\x52\x9e\xff\xff\x97\x15\x01\x00\x90\x14\x01\x00\x90\x94\x86\x01\x91\xf3\x03\x00\xaa\xa0\x3e\x00\xf9\xe0\x03\x14\xaa\x8b\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x83\xff\xff\x97\xe0\x03\x13\xaa\xa1\xff\xff\x97"), +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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xd8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\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\x04\x0b\xe4\xbb\x89\x3b\x0a\xd5\xd2\xae\xa0\x3d\x1e\x08\x67\x4c\x52\x3d\x90\xcc"), +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(".hash", 0x298, "\x03\x00\x00\x00\x0f\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x06\x00\x00\x00\x0c\x00\x00\x00\x0d\x00\x00\x00"), +Section(".gnu.hash", 0x2E8, "\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", 0x308, "\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\x0c\x00\x28\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x18\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", 0x470, "\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", 0x524, "\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", 0x548, "\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", 0x578, "\xb8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x10\x09\x00\x00\x00\x00\x00\x00\xc0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xc0\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x14\x09\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", 0x638, "\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", 0x728, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x40\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x740, "\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", 0x998, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9AC, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9B0, "\x01\x1b\x03\x3b\x3c\x00\x00\x00\x06\x00\x00\x00\x50\xfe\xff\xff\x54\x00\x00\x00\xa0\xfe\xff\xff\x68\x00\x00\x00\xd0\xfe\xff\xff\x7c\x00\x00\x00\x10\xff\xff\xff\x90\x00\x00\x00\x60\xff\xff\xff\xb4\x00\x00\x00\x64\xff\xff\xff\xdc\x00\x00\x00"), +Section(".eh_frame", 0x9F0, "\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\xf4\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x30\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x4c\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x78\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\xa4\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x7c\x1e\x01\x1b\x0c\x1f\x00\x2c\x00\x00\x00\x18\x00\x00\x00\x80\xfe\xff\xff\x84\x00\x00\x00\x00\x44\x0e\x30\x4c\x0c\x1d\x30\x93\x02\x94\x04\x95\x08\x9e\x0a\x9d\x0c\x02\x64\x0c\x1f\x30\x4c\x0e\x00\xd3\xd4\xd5\xde\xdd\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDC0, "\xc0\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDC8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x28\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\x98\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xb8\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\xc0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x70\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x08\x03\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\x38\x06\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x78\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\x48\x05\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\x24\x05\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", 0x1FDB8, "\x10\x09\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xc8\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\x14\x09\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\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\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\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x800, "\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\xd5\xff\xff\x97\xe8\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xe0\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc2\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\xa9\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xc2\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\xf5\x0b\x00\xf9\xf4\x4f\x02\xa9\xfd\x03\x00\x91\x60\x01\x80\x52\x9e\xff\xff\x97\x15\x01\x00\x90\x14\x01\x00\x90\x94\x86\x01\x91\xf3\x03\x00\xaa\xa0\x3e\x00\xf9\xe0\x03\x14\xaa\x8b\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x83\xff\xff\x97\xe0\x03\x13\xaa\xa1\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x82\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8e\xff\xff\x97\xa0\x3e\x40\xf9\x9c\xff\xff\x97\xe0\x03\x1f\x2a\xf4\x4f\x42\xa9\xf5\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xABF), Attr("segment","02 0 2752")), +Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x95F), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x39), 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,0x2E7), Attr("section","\".hash\"")), +Annotation(Region(0x2E8,0x303), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x308,0x46F), Attr("section","\".dynsym\"")), +Annotation(Region(0x470,0x522), Attr("section","\".dynstr\"")), +Annotation(Region(0x524,0x541), Attr("section","\".gnu.version\"")), +Annotation(Region(0x548,0x577), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x578,0x637), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x638,0x727), Attr("section","\".rela.plt\"")), +Annotation(Region(0x728,0x73F), Attr("section","\".init\"")), +Annotation(Region(0x740,0x7FF), Attr("section","\".plt\"")), +Annotation(Region(0x728,0x73F), Attr("code-region","()")), +Annotation(Region(0x740,0x7FF), Attr("code-region","()")), +Annotation(Region(0x800,0x833), Attr("symbol-info","_start 0x800 52")), +Annotation(Region(0x834,0x847), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x834,0x847), Attr("symbol-info","call_weak_fn 0x834 20")), +Annotation(Region(0x914,0x997), Attr("symbol","\"main\"")), +Annotation(Region(0x914,0x997), Attr("symbol-info","main 0x914 132")), +Annotation(Region(0x998,0x9AB), Attr("section","\".fini\"")), +Annotation(Region(0x9AC,0x9AF), Attr("section","\".rodata\"")), +Annotation(Region(0x9B0,0x9EB), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9F0,0xABF), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDB8,0x2006B), Attr("segment","03 0x1FDB8 712")), +Annotation(Region(0x1FDC0,0x1FDC7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDC8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDB8,0x1FDBF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x800,0x997), Attr("section","\".text\"")), +Annotation(Region(0x800,0x997), Attr("code-region","()")), +Annotation(Region(0x998,0x9AB), Attr("code-region","()"))]), +Program(Tid(2_090, "%0000082a"), Attrs([]), + Subs([Sub(Tid(2_019, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_091, "%0000082b"), + 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_129, "@__cxa_finalize"), + Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_517, "%000005ed"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_524, "%000005f4"), Attrs([Attr("address","0x794"), +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_530, "%000005fa"), Attrs([Attr("address","0x798"), +Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_535, "%000005ff"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_020, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_092, "%0000082c"), + 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(723, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(727, "%000002d7"), + Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x8C0"), +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(739, "%000002e3"), Attrs([Attr("address","0x8C0"), +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(743, "%000002e7"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(749, "%000002ed"), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(757, "%000002f5"), + Attrs([Attr("address","0x8C8"), 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(762, "%000002fa"), Attrs([Attr("address","0x8CC"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(769, "%00000301"), Attrs([Attr("address","0x8D0"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(775, "%00000307"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(773, "%00000305"))), +Goto(Tid(2_080, "%00000820"), Attrs([]), Int(1,1), +Direct(Tid(1_074, "%00000432")))])), Blk(Tid(1_074, "%00000432"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x8D8"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_084, "%0000043c"), Attrs([Attr("address","0x8DC"), +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_090, "%00000442"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_088, "%00000440"))), Goto(Tid(2_081, "%00000821"), Attrs([]), + Int(1,1), Direct(Tid(1_113, "%00000459")))])), Blk(Tid(1_113, "%00000459"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_116, "%0000045c"), Attrs([Attr("address","0x8E4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_123, "%00000463"), Attrs([Attr("address","0x8E8"), +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_128, "%00000468"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_131, "%0000046b"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Int(1,1), +(Direct(Tid(2_019, "@__cxa_finalize")),Direct(Tid(1_088, "%00000440"))))])), +Blk(Tid(1_088, "%00000440"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_096, "%00000448"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_098, "%0000044a"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_033, "@deregister_tm_clones")),Direct(Tid(1_100, "%0000044c"))))])), +Blk(Tid(1_100, "%0000044c"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_103, "%0000044f"), Attrs([Attr("address","0x8F4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_111, "%00000457"), Attrs([Attr("address","0x8F8"), +Attr("insn","strb w0, [x19, #0x70]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_082, "%00000822"), Attrs([]), Int(1,1), +Direct(Tid(773, "%00000305")))])), Blk(Tid(773, "%00000305"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(783, "%0000030f"), + Attrs([Attr("address","0x8FC"), 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(790, "%00000316"), Attrs([Attr("address","0x900"), +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(795, "%0000031b"), Attrs([Attr("address","0x900"), +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(799, "%0000031f"), Attrs([Attr("address","0x900"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(804, "%00000324"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_024, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("address","0x780"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_093, "%0000082d"), + 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_094, "%0000082e"), 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_095, "%0000082f"), 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_096, "%00000830"), 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_097, "%00000831"), 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(556, "@__libc_start_main"), + Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_495, "%000005d7"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_502, "%000005de"), Attrs([Attr("address","0x784"), +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_508, "%000005e4"), Attrs([Attr("address","0x788"), +Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_513, "%000005e9"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_025, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x998")]), + "_fini", Args([Arg(Tid(2_098, "%00000832"), + 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","0x998")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x99C"), +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","0x99C"), +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","0x99C"), +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","0x99C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9A0"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A4"), +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","0x9A4"), +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","0x9A4"), +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","0x9A8"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_026, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), + "_init", Args([Arg(Tid(2_099, "%00000833"), + 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_804, "@_init"), + Attrs([Attr("address","0x728")]), Phis([]), +Defs([Def(Tid(1_810, "%00000712"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#8",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_816, "%00000718"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#8",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_822, "%0000071e"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#8",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_826, "%00000722"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#8",Imm(64))), Def(Tid(1_832, "%00000728"), + Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_837, "%0000072d"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_839, "%0000072f"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), +(Direct(Tid(2_031, "@call_weak_fn")),Direct(Tid(1_841, "%00000731"))))])), +Blk(Tid(1_841, "%00000731"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(1_846, "%00000736"), Attrs([Attr("address","0x738"), +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(1_851, "%0000073b"), Attrs([Attr("address","0x738"), +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(1_855, "%0000073f"), Attrs([Attr("address","0x738"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_860, "%00000744"), + Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_027, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("stub","()"), Attr("entry-point","()")]), "_start", + Args([Arg(Tid(2_100, "%00000834"), 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(493, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(498, "%000001f2"), Attrs([Attr("address","0x804"), +Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), +Def(Tid(503, "%000001f7"), Attrs([Attr("address","0x808"), +Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), +Def(Tid(509, "%000001fd"), Attrs([Attr("address","0x80C"), +Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), +Def(Tid(516, "%00000204"), Attrs([Attr("address","0x810"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(522, "%0000020a"), Attrs([Attr("address","0x814"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(528, "%00000210"), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(533, "%00000215"), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(540, "%0000021c"), + Attrs([Attr("address","0x820"), 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(545, "%00000221"), Attrs([Attr("address","0x824"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(550, "%00000226"), Attrs([Attr("address","0x828"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(555, "%0000022b"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(558, "%0000022e"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Int(1,1), +(Direct(Tid(2_024, "@__libc_start_main")),Direct(Tid(560, "%00000230"))))])), +Blk(Tid(560, "%00000230"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(563, "%00000233"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(566, "%00000236"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Int(1,1), +(Direct(Tid(2_030, "@abort")),Direct(Tid(2_083, "%00000823"))))])), +Blk(Tid(2_083, "%00000823"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_084, "%00000824"), Attrs([]), Int(1,1), +(Direct(Tid(2_031, "@call_weak_fn")),))]))])), Sub(Tid(2_030, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(564, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_605, "%00000645"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_612, "%0000064c"), Attrs([Attr("address","0x7D4"), +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_618, "%00000652"), Attrs([Attr("address","0x7D8"), +Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_623, "%00000657"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_031, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_101, "%00000835"), + 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(568, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(571, "%0000023b"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(578, "%00000242"), + Attrs([Attr("address","0x838"), 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(584, "%00000248"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(582, "%00000246"))), Goto(Tid(2_085, "%00000825"), Attrs([]), + Int(1,1), Direct(Tid(1_193, "%000004a9")))])), Blk(Tid(582, "%00000246"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(590, "%0000024e"), Attrs([Attr("address","0x844"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0x80")]), Int(1,1), +Direct(Tid(1_194, "@__gmon_start__")))])), Blk(Tid(1_194, "@__gmon_start__"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_583, "%0000062f"), Attrs([Attr("address","0x7C0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_590, "%00000636"), Attrs([Attr("address","0x7C4"), +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_596, "%0000063c"), Attrs([Attr("address","0x7C8"), +Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_601, "%00000641"), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_033, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_102, "%00000836"), + 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(596, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(599, "%00000257"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(605, "%0000025d"), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(610, "%00000262"), Attrs([Attr("address","0x858"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(616, "%00000268"), Attrs([Attr("address","0x85C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(622, "%0000026e"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(627, "%00000273"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(633, "%00000279"), Attrs([Attr("address","0x860"), +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(639, "%0000027f"), Attrs([Attr("address","0x860"), +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(643, "%00000283"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(647, "%00000287"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(653, "%0000028d"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(651, "%0000028b"))), Goto(Tid(2_086, "%00000826"), Attrs([]), + Int(1,1), Direct(Tid(1_163, "%0000048b")))])), Blk(Tid(1_163, "%0000048b"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_166, "%0000048e"), Attrs([Attr("address","0x868"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_173, "%00000495"), Attrs([Attr("address","0x86C"), +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_178, "%0000049a"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(651, "%0000028b"))), Goto(Tid(2_087, "%00000827"), Attrs([]), + Int(1,1), Direct(Tid(1_182, "%0000049e")))])), Blk(Tid(651, "%0000028b"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(659, "%00000293"), Attrs([Attr("address","0x87C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_182, "%0000049e"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x874"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_191, "%000004a7"), Attrs([Attr("address","0x878"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_036, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_103, "%00000837"), + 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(810, "@frame_dummy"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(812, "%0000032c"), Attrs([Attr("address","0x910"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_043, "@register_tm_clones")),))]))])), Sub(Tid(2_037, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_104, "%00000838"), + 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_021, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_649, "%00000671"), Attrs([Attr("address","0x7F0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_656, "%00000678"), Attrs([Attr("address","0x7F4"), +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_662, "%0000067e"), Attrs([Attr("address","0x7F8"), +Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_667, "%00000683"), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_038, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_105, "%00000839"), + 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_106, "%0000083a"), + 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_107, "%0000083b"), + 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(814, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(818, "%00000332"), + Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(824, "%00000338"), Attrs([Attr("address","0x914"), +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(830, "%0000033e"), Attrs([Attr("address","0x914"), +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(834, "%00000342"), Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#4",Imm(64))), Def(Tid(842, "%0000034a"), + Attrs([Attr("address","0x918"), Attr("insn","str x21, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R21",Imm(64)),LittleEndian(),64)), +Def(Tid(848, "%00000350"), Attrs([Attr("address","0x91C"), +Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(854, "%00000356"), + Attrs([Attr("address","0x91C"), Attr("insn","stp x20, x19, [sp, #0x20]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#5",Imm(64)),Var("R20",Imm(64)),LittleEndian(),64)), +Def(Tid(860, "%0000035c"), Attrs([Attr("address","0x91C"), +Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(866, "%00000362"), Attrs([Attr("address","0x920"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(871, "%00000367"), Attrs([Attr("address","0x924"), +Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(876, "%0000036c"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x188")]), Var("R30",Imm(64)), Int(2348,64))]), +Jmps([Call(Tid(879, "%0000036f"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x188")]), Int(1,1), +(Direct(Tid(2_039, "@malloc")),Direct(Tid(881, "%00000371"))))])), +Blk(Tid(881, "%00000371"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(884, "%00000374"), Attrs([Attr("address","0x92C"), +Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), +Def(Tid(889, "%00000379"), Attrs([Attr("address","0x930"), +Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), +Def(Tid(895, "%0000037f"), Attrs([Attr("address","0x934"), +Attr("insn","add x20, x20, #0x61")]), Var("R20",Imm(64)), +PLUS(Var("R20",Imm(64)),Int(97,64))), Def(Tid(901, "%00000385"), + Attrs([Attr("address","0x938"), Attr("insn","mov x19, x0")]), + Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(909, "%0000038d"), + Attrs([Attr("address","0x93C"), Attr("insn","str x0, [x21, #0x78]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(915, "%00000393"), Attrs([Attr("address","0x940"), +Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), +Def(Tid(920, "%00000398"), Attrs([Attr("address","0x944"), +Attr("insn","bl #-0x1d4")]), Var("R30",Imm(64)), Int(2376,64))]), +Jmps([Call(Tid(923, "%0000039b"), Attrs([Attr("address","0x944"), +Attr("insn","bl #-0x1d4")]), Int(1,1), +(Direct(Tid(2_046, "@strlen")),Direct(Tid(925, "%0000039d"))))])), +Blk(Tid(925, "%0000039d"), Attrs([Attr("address","0x948")]), Phis([]), +Defs([Def(Tid(929, "%000003a1"), Attrs([Attr("address","0x948"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(935, "%000003a7"), Attrs([Attr("address","0x94C"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(941, "%000003ad"), Attrs([Attr("address","0x950"), +Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), +Def(Tid(946, "%000003b2"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2392,64))]), +Jmps([Call(Tid(949, "%000003b5"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_040, "@memcpy")),Direct(Tid(951, "%000003b7"))))])), +Blk(Tid(951, "%000003b7"), Attrs([Attr("address","0x958")]), Phis([]), +Defs([Def(Tid(955, "%000003bb"), Attrs([Attr("address","0x958"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2400,64))]), +Jmps([Call(Tid(963, "%000003c3"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x17c")]), Int(1,1), +(Direct(Tid(2_042, "@puts")),Direct(Tid(965, "%000003c5"))))])), +Blk(Tid(965, "%000003c5"), Attrs([Attr("address","0x960")]), Phis([]), +Defs([Def(Tid(970, "%000003ca"), Attrs([Attr("address","0x960"), +Attr("insn","ldr x19, [x21, #0x78]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(976, "%000003d0"), Attrs([Attr("address","0x964"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(981, "%000003d5"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1f8")]), Var("R30",Imm(64)), Int(2412,64))]), +Jmps([Call(Tid(983, "%000003d7"), Attrs([Attr("address","0x968"), +Attr("insn","bl #-0x1f8")]), Int(1,1), +(Direct(Tid(2_046, "@strlen")),Direct(Tid(985, "%000003d9"))))])), +Blk(Tid(985, "%000003d9"), Attrs([Attr("address","0x96C")]), Phis([]), +Defs([Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x96C"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(995, "%000003e3"), Attrs([Attr("address","0x970"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_000, "%000003e8"), Attrs([Attr("address","0x974"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1c8")]), Var("R30",Imm(64)), Int(2428,64))]), +Jmps([Call(Tid(1_008, "%000003f0"), Attrs([Attr("address","0x978"), +Attr("insn","bl #-0x1c8")]), Int(1,1), +(Direct(Tid(2_041, "@memset")),Direct(Tid(1_010, "%000003f2"))))])), +Blk(Tid(1_010, "%000003f2"), Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_015, "%000003f7"), Attrs([Attr("address","0x97C"), +Attr("insn","ldr x0, [x21, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x190")]), Var("R30",Imm(64)), Int(2436,64))]), +Jmps([Call(Tid(1_023, "%000003ff"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x190")]), Int(1,1), +(Direct(Tid(2_037, "@free")),Direct(Tid(1_025, "%00000401"))))])), +Blk(Tid(1_025, "%00000401"), Attrs([Attr("address","0x984")]), Phis([]), +Defs([Def(Tid(1_028, "%00000404"), Attrs([Attr("address","0x984"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_034, "%0000040a"), Attrs([Attr("address","0x988"), +Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("#6",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(1_039, "%0000040f"), + Attrs([Attr("address","0x988"), Attr("insn","ldp x20, x19, [sp, #0x20]")]), + Var("R20",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#6",Imm(64)),LittleEndian(),64)), +Def(Tid(1_044, "%00000414"), Attrs([Attr("address","0x988"), +Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x98C"), +Attr("insn","ldr x21, [sp, #0x10]")]), Var("R21",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_058, "%00000422"), Attrs([Attr("address","0x990"), +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_063, "%00000427"), Attrs([Attr("address","0x990"), +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_067, "%0000042b"), Attrs([Attr("address","0x990"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_072, "%00000430"), + Attrs([Attr("address","0x994"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_039, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_108, "%0000083c"), 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_109, "%0000083d"), + 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(877, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_539, "%00000603"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_546, "%0000060a"), Attrs([Attr("address","0x7A4"), +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_552, "%00000610"), Attrs([Attr("address","0x7A8"), +Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_557, "%00000615"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_040, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_110, "%0000083e"), 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_111, "%0000083f"), + 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_112, "%00000840"), 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_113, "%00000841"), 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(947, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_451, "%000005ab"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_458, "%000005b2"), Attrs([Attr("address","0x764"), +Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), +Def(Tid(1_464, "%000005b8"), Attrs([Attr("address","0x768"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_469, "%000005bd"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_041, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x7B0"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_114, "%00000842"), 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_115, "%00000843"), + 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_116, "%00000844"), + 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_117, "%00000845"), 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_006, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_561, "%00000619"), Attrs([Attr("address","0x7B0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_568, "%00000620"), Attrs([Attr("address","0x7B4"), +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_574, "%00000626"), Attrs([Attr("address","0x7B8"), +Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_579, "%0000062b"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_042, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x7E0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_118, "%00000846"), 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_119, "%00000847"), 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(961, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_627, "%0000065b"), Attrs([Attr("address","0x7E0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_634, "%00000662"), Attrs([Attr("address","0x7E4"), +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_640, "%00000668"), Attrs([Attr("address","0x7E8"), +Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_645, "%0000066d"), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_043, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_120, "%00000848"), + 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(661, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(664, "%00000298"), Attrs([Attr("address","0x880"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(670, "%0000029e"), Attrs([Attr("address","0x884"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(675, "%000002a3"), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(681, "%000002a9"), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(688, "%000002b0"), Attrs([Attr("address","0x890"), +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(694, "%000002b6"), Attrs([Attr("address","0x894"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(701, "%000002bd"), Attrs([Attr("address","0x898"), +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(707, "%000002c3"), Attrs([Attr("address","0x89C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(713, "%000002c9"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(711, "%000002c7"))), Goto(Tid(2_088, "%00000828"), Attrs([]), + Int(1,1), Direct(Tid(1_133, "%0000046d")))])), Blk(Tid(1_133, "%0000046d"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_136, "%00000470"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x8A8"), +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_148, "%0000047c"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(711, "%000002c7"))), Goto(Tid(2_089, "%00000829"), Attrs([]), + Int(1,1), Direct(Tid(1_152, "%00000480")))])), Blk(Tid(711, "%000002c7"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(719, "%000002cf"), Attrs([Attr("address","0x8B8"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_152, "%00000480"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_156, "%00000484"), Attrs([Attr("address","0x8B0"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_161, "%00000489"), Attrs([Attr("address","0x8B4"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_046, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_121, "%00000849"), 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_122, "%0000084a"), + 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(921, "@strlen"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_480, "%000005c8"), Attrs([Attr("address","0x774"), +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_486, "%000005ce"), Attrs([Attr("address","0x778"), +Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_491, "%000005d3"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))]))]))) \ No newline at end of file diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..6e0377703 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,348 @@ +0000082a: program +000007e3: sub __cxa_finalize(__cxa_finalize_result) +0000082b: __cxa_finalize_result :: out u32 = low:32[R0] + +00000469: +000005ed: R16 := 0x20000 +000005f4: R17 := mem[R16 + 0x18, el]:u64 +000005fa: R16 := R16 + 0x18 +000005ff: call R17 with noreturn + +000007e4: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +0000082c: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002d3: +000002d7: #3 := R31 - 0x20 +000002dd: mem := mem with [#3, el]:u64 <- R29 +000002e3: mem := mem with [#3 + 8, el]:u64 <- R30 +000002e7: R31 := #3 +000002ed: R29 := R31 +000002f5: mem := mem with [R31 + 0x10, el]:u64 <- R19 +000002fa: R19 := 0x20000 +00000301: R0 := pad:64[mem[R19 + 0x70]] +00000307: when 0:0[R0] goto %00000305 +00000820: goto %00000432 + +00000432: +00000435: R0 := 0x1F000 +0000043c: R0 := mem[R0 + 0xFC8, el]:u64 +00000442: when R0 = 0 goto %00000440 +00000821: goto %00000459 + +00000459: +0000045c: R0 := 0x20000 +00000463: R0 := mem[R0 + 0x58, el]:u64 +00000468: R30 := 0x8F0 +0000046b: call @__cxa_finalize with return %00000440 + +00000440: +00000448: R30 := 0x8F4 +0000044a: call @deregister_tm_clones with return %0000044c + +0000044c: +0000044f: R0 := 1 +00000457: mem := mem with [R19 + 0x70] <- 7:0[R0] +00000822: goto %00000305 + +00000305: +0000030f: R19 := mem[R31 + 0x10, el]:u64 +00000316: R29 := mem[R31, el]:u64 +0000031b: R30 := mem[R31 + 8, el]:u64 +0000031f: R31 := R31 + 0x20 +00000324: call R30 with noreturn + +000007e8: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +0000082d: __libc_start_main_main :: in u64 = R0 +0000082e: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000082f: __libc_start_main_arg3 :: in out u64 = R2 +00000830: __libc_start_main_auxv :: in out u64 = R3 +00000831: __libc_start_main_result :: out u32 = low:32[R0] + +0000022c: +000005d7: R16 := 0x20000 +000005de: R17 := mem[R16 + 0x10, el]:u64 +000005e4: R16 := R16 + 0x10 +000005e9: call R17 with noreturn + +000007e9: sub _fini(_fini_result) +00000832: _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 + +000007ea: sub _init(_init_result) +00000833: _init_result :: out u32 = low:32[R0] + +0000070c: +00000712: #8 := R31 - 0x10 +00000718: mem := mem with [#8, el]:u64 <- R29 +0000071e: mem := mem with [#8 + 8, el]:u64 <- R30 +00000722: R31 := #8 +00000728: R29 := R31 +0000072d: R30 := 0x738 +0000072f: call @call_weak_fn with return %00000731 + +00000731: +00000736: R29 := mem[R31, el]:u64 +0000073b: R30 := mem[R31 + 8, el]:u64 +0000073f: R31 := R31 + 0x10 +00000744: call R30 with noreturn + +000007eb: sub _start(_start_result) +00000834: _start_result :: out u32 = low:32[R0] + +000001ed: +000001f2: R29 := 0 +000001f7: R30 := 0 +000001fd: R5 := R0 +00000204: R1 := mem[R31, el]:u64 +0000020a: R2 := R31 + 8 +00000210: R6 := R31 +00000215: R0 := 0x1F000 +0000021c: R0 := mem[R0 + 0xFD8, el]:u64 +00000221: R3 := 0 +00000226: R4 := 0 +0000022b: R30 := 0x830 +0000022e: call @__libc_start_main with return %00000230 + +00000230: +00000233: R30 := 0x834 +00000236: call @abort with return %00000823 + +00000823: +00000824: call @call_weak_fn with noreturn + +000007ee: sub abort() + + +00000234: +00000645: R16 := 0x20000 +0000064c: R17 := mem[R16 + 0x38, el]:u64 +00000652: R16 := R16 + 0x38 +00000657: call R17 with noreturn + +000007ef: sub call_weak_fn(call_weak_fn_result) +00000835: call_weak_fn_result :: out u32 = low:32[R0] + +00000238: +0000023b: R0 := 0x1F000 +00000242: R0 := mem[R0 + 0xFD0, el]:u64 +00000248: when R0 = 0 goto %00000246 +00000825: goto %000004a9 + +00000246: +0000024e: call R30 with noreturn + +000004a9: +000004ac: goto @__gmon_start__ + +000004aa: +0000062f: R16 := 0x20000 +00000636: R17 := mem[R16 + 0x30, el]:u64 +0000063c: R16 := R16 + 0x30 +00000641: call R17 with noreturn + +000007f1: sub deregister_tm_clones(deregister_tm_clones_result) +00000836: deregister_tm_clones_result :: out u32 = low:32[R0] + +00000254: +00000257: R0 := 0x20000 +0000025d: R0 := R0 + 0x70 +00000262: R1 := 0x20000 +00000268: R1 := R1 + 0x70 +0000026e: #1 := ~R0 +00000273: #2 := R1 + ~R0 +00000279: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +0000027f: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +00000283: ZF := #2 + 1 = 0 +00000287: NF := 63:63[#2 + 1] +0000028d: when ZF goto %0000028b +00000826: goto %0000048b + +0000048b: +0000048e: R1 := 0x1F000 +00000495: R1 := mem[R1 + 0xFC0, el]:u64 +0000049a: when R1 = 0 goto %0000028b +00000827: goto %0000049e + +0000028b: +00000293: call R30 with noreturn + +0000049e: +000004a2: R16 := R1 +000004a7: call R16 with noreturn + +000007f4: sub frame_dummy(frame_dummy_result) +00000837: frame_dummy_result :: out u32 = low:32[R0] + +0000032a: +0000032c: call @register_tm_clones with noreturn + +000007f5: sub free(free_ptr) +00000838: free_ptr :: in out u64 = R0 + +000003fd: +00000671: R16 := 0x20000 +00000678: R17 := mem[R16 + 0x48, el]:u64 +0000067e: R16 := R16 + 0x48 +00000683: call R17 with noreturn + +000007f6: sub main(main_argc, main_argv, main_result) +00000839: main_argc :: in u32 = low:32[R0] +0000083a: main_argv :: in out u64 = R1 +0000083b: main_result :: out u32 = low:32[R0] + +0000032e: +00000332: #4 := R31 - 0x30 +00000338: mem := mem with [#4, el]:u64 <- R29 +0000033e: mem := mem with [#4 + 8, el]:u64 <- R30 +00000342: R31 := #4 +0000034a: mem := mem with [R31 + 0x10, el]:u64 <- R21 +00000350: #5 := R31 + 0x20 +00000356: mem := mem with [#5, el]:u64 <- R20 +0000035c: mem := mem with [#5 + 8, el]:u64 <- R19 +00000362: R29 := R31 +00000367: R0 := 0xB +0000036c: R30 := 0x92C +0000036f: call @malloc with return %00000371 + +00000371: +00000374: R21 := 0x20000 +00000379: R20 := 0x20000 +0000037f: R20 := R20 + 0x61 +00000385: R19 := R0 +0000038d: mem := mem with [R21 + 0x78, el]:u64 <- R0 +00000393: R0 := R20 +00000398: R30 := 0x948 +0000039b: call @strlen with return %0000039d + +0000039d: +000003a1: R2 := R0 +000003a7: R0 := R19 +000003ad: R1 := R20 +000003b2: R30 := 0x958 +000003b5: call @memcpy with return %000003b7 + +000003b7: +000003bb: R0 := R19 +000003c0: R30 := 0x960 +000003c3: call @puts with return %000003c5 + +000003c5: +000003ca: R19 := mem[R21 + 0x78, el]:u64 +000003d0: R0 := R19 +000003d5: R30 := 0x96C +000003d7: call @strlen with return %000003d9 + +000003d9: +000003dd: R2 := R0 +000003e3: R0 := R19 +000003e8: R1 := 1 +000003ed: R30 := 0x97C +000003f0: call @memset with return %000003f2 + +000003f2: +000003f7: R0 := mem[R21 + 0x78, el]:u64 +000003fc: R30 := 0x984 +000003ff: call @free with return %00000401 + +00000401: +00000404: R0 := 0 +0000040a: #6 := R31 + 0x20 +0000040f: R20 := mem[#6, el]:u64 +00000414: R19 := mem[#6 + 8, el]:u64 +0000041b: R21 := mem[R31 + 0x10, el]:u64 +00000422: R29 := mem[R31, el]:u64 +00000427: R30 := mem[R31 + 8, el]:u64 +0000042b: R31 := R31 + 0x30 +00000430: call R30 with noreturn + +000007f7: sub malloc(malloc_size, malloc_result) +0000083c: malloc_size :: in u64 = R0 +0000083d: malloc_result :: out u64 = R0 + +0000036d: +00000603: R16 := 0x20000 +0000060a: R17 := mem[R16 + 0x20, el]:u64 +00000610: R16 := R16 + 0x20 +00000615: call R17 with noreturn + +000007f8: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000083e: memcpy_dst :: in out u64 = R0 +0000083f: memcpy_src :: in out u64 = R1 +00000840: memcpy_n :: in u64 = R2 +00000841: memcpy_result :: out u64 = R0 + +000003b3: +000005ab: R16 := 0x20000 +000005b2: R17 := mem[R16, el]:u64 +000005b8: R16 := R16 +000005bd: call R17 with noreturn + +000007f9: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000842: memset_buf :: in out u64 = R0 +00000843: memset_c :: in u32 = low:32[R1] +00000844: memset_n :: in u64 = R2 +00000845: memset_result :: out u64 = R0 + +000003ee: +00000619: R16 := 0x20000 +00000620: R17 := mem[R16 + 0x28, el]:u64 +00000626: R16 := R16 + 0x28 +0000062b: call R17 with noreturn + +000007fa: sub puts(puts_s, puts_result) +00000846: puts_s :: in u64 = R0 +00000847: puts_result :: out u32 = low:32[R0] + +000003c1: +0000065b: R16 := 0x20000 +00000662: R17 := mem[R16 + 0x40, el]:u64 +00000668: R16 := R16 + 0x40 +0000066d: call R17 with noreturn + +000007fb: sub register_tm_clones(register_tm_clones_result) +00000848: register_tm_clones_result :: out u32 = low:32[R0] + +00000295: +00000298: R0 := 0x20000 +0000029e: R0 := R0 + 0x70 +000002a3: R1 := 0x20000 +000002a9: R1 := R1 + 0x70 +000002b0: R1 := R1 + ~R0 + 1 +000002b6: R2 := 0.63:63[R1] +000002bd: R1 := R2 + (R1 ~>> 3) +000002c3: R1 := extend:64[63:1[R1]] +000002c9: when R1 = 0 goto %000002c7 +00000828: goto %0000046d + +0000046d: +00000470: R2 := 0x1F000 +00000477: R2 := mem[R2 + 0xFE0, el]:u64 +0000047c: when R2 = 0 goto %000002c7 +00000829: goto %00000480 + +000002c7: +000002cf: call R30 with noreturn + +00000480: +00000484: R16 := R2 +00000489: call R16 with noreturn + +000007fe: sub strlen(strlen_s, strlen_result) +00000849: strlen_s :: in u64 = R0 +0000084a: strlen_result :: out u64 = R0 + +00000399: +000005c1: R16 := 0x20000 +000005c8: R17 := mem[R16 + 8, el]:u64 +000005ce: R16 := R16 + 8 +000005d3: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..0bd0a291a --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,809 @@ +var {:extern} Gamma_R0: bool; +var {:extern} Gamma_R1: bool; +var {:extern} Gamma_R16: bool; +var {:extern} Gamma_R17: bool; +var {:extern} Gamma_R19: bool; +var {:extern} Gamma_R2: bool; +var {:extern} Gamma_R20: bool; +var {:extern} Gamma_R21: bool; +var {:extern} Gamma_R29: bool; +var {:extern} Gamma_R30: bool; +var {:extern} Gamma_R31: bool; +var {:extern} Gamma_malloc_base: [bv64]bool; +var {:extern} Gamma_malloc_count: [bv64]bool; +var {:extern} Gamma_malloc_end: [bv64]bool; +var {:extern} Gamma_mem: [bv64]bool; +var {:extern} Gamma_stack: [bv64]bool; +var {:extern} R0: bv64; +var {:extern} R1: bv64; +var {:extern} R16: bv64; +var {:extern} R17: bv64; +var {:extern} R19: bv64; +var {:extern} R2: bv64; +var {:extern} R20: bv64; +var {:extern} R21: bv64; +var {:extern} R29: bv64; +var {:extern} R30: bv64; +var {:extern} R31: bv64; +var {:extern} malloc_base: [bv64]bv8; +var {:extern} malloc_count: [bv64]bv8; +var {:extern} malloc_end: [bv64]bv8; +var {:extern} mem: [bv64]bv8; +var {:extern} stack: [bv64]bv8; +const {:extern} $buf_addr: bv64; +axiom ($buf_addr == 131192bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131168bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131169bv64); +function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { + false +} + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); +function {:extern} gamma_load32(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) +} + +function {:extern} gamma_load64(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 7bv64)] && (gammaMap[bvadd64(index, 6bv64)] && (gammaMap[bvadd64(index, 5bv64)] && (gammaMap[bvadd64(index, 4bv64)] && (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))))))) +} + +function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { + gammaMap[index] +} + +function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + gammaMap[index := value][bvadd64(index, 1bv64) := value][bvadd64(index, 2bv64) := value][bvadd64(index, 3bv64) := value][bvadd64(index, 4bv64) := value][bvadd64(index, 5bv64) := value][bvadd64(index, 6bv64) := value][bvadd64(index, 7bv64) := value] +} + +function {:extern} memory_load64_le(memory: [bv64]bv8, index: bv64) returns (bv64) { + (memory[bvadd64(index, 7bv64)] ++ (memory[bvadd64(index, 6bv64)] ++ (memory[bvadd64(index, 5bv64)] ++ (memory[bvadd64(index, 4bv64)] ++ (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))))))) +} + +function {:extern} memory_load8_le(memory: [bv64]bv8, index: bv64) returns (bv8) { + memory[index] +} + +function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { + memory[index := value[8:0]][bvadd64(index, 1bv64) := value[16:8]][bvadd64(index, 2bv64) := value[24:16]][bvadd64(index, 3bv64) := value[32:24]][bvadd64(index, 4bv64) := value[40:32]][bvadd64(index, 5bv64) := value[48:40]][bvadd64(index, 6bv64) := value[56:48]][bvadd64(index, 7bv64) := value[64:56]] +} + +procedure {:extern} rely(); + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); + free ensures (memory_load8_le(mem, 2476bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2477bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2478bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2479bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure {:extern} rely_transitive() + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); +{ + call rely(); + call rely(); +} + +procedure {:extern} rely_reflexive(); + +procedure {:extern} guarantee_reflexive(); + modifies Gamma_mem, mem; + +procedure #free(); + modifies Gamma_R16, Gamma_R17, R16, R17; + requires (forall i : int, j: bv64 :: (malloc_base[i] == R0 && bvuge64(j, R0) && bvult64(j, malloc_end[i])) ==> Gamma_mem[j]); + free requires (memory_load8_le(mem, 2476bv64) == 1bv8); + free requires (memory_load8_le(mem, 2477bv64) == 0bv8); + free requires (memory_load8_le(mem, 2478bv64) == 2bv8); + free requires (memory_load8_le(mem, 2479bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2476bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2477bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2478bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2479bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure main() + modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, Gamma_R20, Gamma_R21, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, R20, R21, R29, R30, R31, malloc_base, malloc_count, malloc_end, mem, stack; + requires (gamma_load8(Gamma_mem, $password_addr) == false); + requires malloc_count == 0; + requires gamma_load32(Gamma_mem, memory_load64_le(mem, $stext_addr)); + requires R31 == 100bv64; + free requires (memory_load8_le(mem, 131152bv64) == 0bv8); + free requires (memory_load8_le(mem, 131153bv64) == 0bv8); + free requires (memory_load8_le(mem, 131154bv64) == 0bv8); + free requires (memory_load8_le(mem, 131155bv64) == 0bv8); + free requires (memory_load8_le(mem, 131156bv64) == 0bv8); + free requires (memory_load8_le(mem, 131157bv64) == 0bv8); + free requires (memory_load8_le(mem, 131158bv64) == 0bv8); + free requires (memory_load8_le(mem, 131159bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free requires (memory_load8_le(mem, 131168bv64) == 7bv8); + free requires (memory_load8_le(mem, 131169bv64) == 117bv8); + free requires (memory_load8_le(mem, 131170bv64) == 115bv8); + free requires (memory_load8_le(mem, 131171bv64) == 101bv8); + free requires (memory_load8_le(mem, 131172bv64) == 114bv8); + free requires (memory_load8_le(mem, 131173bv64) == 58bv8); + free requires (memory_load8_le(mem, 131174bv64) == 112bv8); + free requires (memory_load8_le(mem, 131175bv64) == 97bv8); + free requires (memory_load8_le(mem, 131176bv64) == 115bv8); + free requires (memory_load8_le(mem, 131177bv64) == 115bv8); + free requires (memory_load8_le(mem, 131178bv64) == 0bv8); + free requires (memory_load8_le(mem, 131179bv64) == 0bv8); + free requires (memory_load8_le(mem, 2476bv64) == 1bv8); + free requires (memory_load8_le(mem, 2477bv64) == 0bv8); + free requires (memory_load8_le(mem, 2478bv64) == 2bv8); + free requires (memory_load8_le(mem, 2479bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (Gamma_R19 == old(Gamma_R19)); + free ensures (Gamma_R20 == old(Gamma_R20)); + free ensures (Gamma_R21 == old(Gamma_R21)); + free ensures (Gamma_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R19 == old(R19)); + free ensures (R20 == old(R20)); + free ensures (R21 == old(R21)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2476bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2477bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2478bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2479bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); +{ + var #4: bv64; + var #5: bv64; + var #6: bv64; + var Gamma_#4: bool; + var Gamma_#5: bool; + var Gamma_#6: bool; + lmain: + assume {:captureState "lmain"} true; + #4, Gamma_#4 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); + assume {:captureState "%00000338"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); + assume {:captureState "%0000033e"} true; + R31, Gamma_R31 := #4, Gamma_#4; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R21), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R21); + assume {:captureState "%0000034a"} true; + #5, Gamma_#5 := bvadd64(R31, 32bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #5, R20), gamma_store64(Gamma_stack, #5, Gamma_R20); + assume {:captureState "%00000356"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#5, 8bv64), R19), gamma_store64(Gamma_stack, bvadd64(#5, 8bv64), Gamma_R19); + assume {:captureState "%0000035c"} true; + R29, Gamma_R29 := R31, Gamma_R31; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2348bv64, true; + call malloc(); + goto l00000371; + l00000371: + assume {:captureState "l00000371"} true; + R21, Gamma_R21 := 131072bv64, true; + R20, Gamma_R20 := 131072bv64, true; + R20, Gamma_R20 := bvadd64(R20, 97bv64), Gamma_R20; + R19, Gamma_R19 := R0, Gamma_R0; + call rely(); + assert (L(mem, bvadd64(R21, 120bv64)) ==> Gamma_R0); + mem, Gamma_mem := memory_store64_le(mem, bvadd64(R21, 120bv64), R0), gamma_store64(Gamma_mem, bvadd64(R21, 120bv64), Gamma_R0); + assume {:captureState "%0000038d"} true; + R0, Gamma_R0 := R20, Gamma_R20; + R30, Gamma_R30 := 2376bv64, true; + call strlen(); + goto l0000039d; + l0000039d: + assume {:captureState "l0000039d"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R1, Gamma_R1 := R20, Gamma_R20; + R30, Gamma_R30 := 2392bv64, true; + call memcpy(); + goto l000003b7; + l000003b7: + assume {:captureState "l000003b7"} true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2400bv64, true; + call puts(); + goto l000003c5; + l000003c5: + assume {:captureState "l000003c5"} true; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, bvadd64(R21, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R21, 120bv64)) || L(mem, bvadd64(R21, 120bv64))); + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2412bv64, true; + call strlen(); + goto l000003d9; + l000003d9: + assume {:captureState "l000003d9"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R1, Gamma_R1 := 1bv64, true; + R30, Gamma_R30 := 2428bv64, true; + call memset(); + goto l000003f2; + l000003f2: + assume {:captureState "l000003f2"} true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R21, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R21, 120bv64)) || L(mem, bvadd64(R21, 120bv64))); + R30, Gamma_R30 := 2436bv64, true; + call #free(); + goto l00000401; + l00000401: + assume {:captureState "l00000401"} true; + R0, Gamma_R0 := 0bv64, true; + #6, Gamma_#6 := bvadd64(R31, 32bv64), Gamma_R31; + R20, Gamma_R20 := memory_load64_le(stack, #6), gamma_load64(Gamma_stack, #6); + R19, Gamma_R19 := memory_load64_le(stack, bvadd64(#6, 8bv64)), gamma_load64(Gamma_stack, bvadd64(#6, 8bv64)); + R21, Gamma_R21 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); + R29, Gamma_R29 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); + R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); + R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; + return; +} + +procedure malloc(); + modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, R0, R16, R17, malloc_base, malloc_count, malloc_end; + requires bvugt64(R0, 0bv64); + requires Gamma_R0 == true; + free requires (memory_load8_le(mem, 2476bv64) == 1bv8); + free requires (memory_load8_le(mem, 2477bv64) == 0bv8); + free requires (memory_load8_le(mem, 2478bv64) == 2bv8); + free requires (memory_load8_le(mem, 2479bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures Gamma_R0 == true; + ensures malloc_count == old(malloc_count) + 1; + ensures bvugt64(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); + ensures (forall i : bv64 :: (bvuge64(i, R0) && bvult64(i, bvadd64(R0, old(R0)))) ==> (Gamma_mem[i] && gamma_load8(Gamma_mem, i))); + free ensures (memory_load8_le(mem, 2476bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2477bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2478bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2479bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure memcpy(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + free requires (memory_load8_le(mem, 2476bv64) == 1bv8); + free requires (memory_load8_le(mem, 2477bv64) == 0bv8); + free requires (memory_load8_le(mem, 2478bv64) == 2bv8); + free requires (memory_load8_le(mem, 2479bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i, bvadd64(R0, R2))) then gamma_load8((Gamma_mem), bvadd64(bvsub64(i, R0), R1)) else old(gamma_load8(Gamma_mem, i)))); + ensures (forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le((mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i)))); + free ensures (memory_load8_le(mem, 2476bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2477bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2478bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2479bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure memset(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + requires Gamma_R1; + free requires (memory_load8_le(mem, 2476bv64) == 1bv8); + free requires (memory_load8_le(mem, 2477bv64) == 0bv8); + free requires (memory_load8_le(mem, 2478bv64) == 2bv8); + free requires (memory_load8_le(mem, 2479bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures ((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)))); + ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then Gamma_R1 else old(gamma_load8(Gamma_mem, i)))); + 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)))); + free ensures (memory_load8_le(mem, 2476bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2477bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2478bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2479bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure puts(); + modifies Gamma_R16, Gamma_R17, R16, R17; + free requires (memory_load8_le(mem, 2476bv64) == 1bv8); + free requires (memory_load8_le(mem, 2477bv64) == 0bv8); + free requires (memory_load8_le(mem, 2478bv64) == 2bv8); + free requires (memory_load8_le(mem, 2479bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2476bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2477bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2478bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2479bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure strlen(); + modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; + free requires (memory_load8_le(mem, 2476bv64) == 1bv8); + free requires (memory_load8_le(mem, 2477bv64) == 0bv8); + free requires (memory_load8_le(mem, 2478bv64) == 2bv8); + free requires (memory_load8_le(mem, 2479bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + 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 (bvult64(old(R0), bvadd64(bvadd64(old(R0), R0), 1bv64))); + free ensures (memory_load8_le(mem, 2476bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2477bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2478bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2479bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..cc545d703 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,145 @@ + +Relocation section '.rela.dyn' at offset 0x578 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdb8 0000000000000403 R_AARCH64_RELATIVE 910 +000000000001fdc0 0000000000000403 R_AARCH64_RELATIVE 8c0 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 914 +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 0x638 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: 0000000000000728 0 SECTION LOCAL DEFAULT 12 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 24 .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 100 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 .hash + 5: 00000000000002e8 0 SECTION LOCAL DEFAULT 5 .gnu.hash + 6: 0000000000000308 0 SECTION LOCAL DEFAULT 6 .dynsym + 7: 0000000000000470 0 SECTION LOCAL DEFAULT 7 .dynstr + 8: 0000000000000524 0 SECTION LOCAL DEFAULT 8 .gnu.version + 9: 0000000000000548 0 SECTION LOCAL DEFAULT 9 .gnu.version_r + 10: 0000000000000578 0 SECTION LOCAL DEFAULT 10 .rela.dyn + 11: 0000000000000638 0 SECTION LOCAL DEFAULT 11 .rela.plt + 12: 0000000000000728 0 SECTION LOCAL DEFAULT 12 .init + 13: 0000000000000740 0 SECTION LOCAL DEFAULT 13 .plt + 14: 0000000000000800 0 SECTION LOCAL DEFAULT 14 .text + 15: 0000000000000998 0 SECTION LOCAL DEFAULT 15 .fini + 16: 00000000000009ac 0 SECTION LOCAL DEFAULT 16 .rodata + 17: 00000000000009b0 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr + 18: 00000000000009f0 0 SECTION LOCAL DEFAULT 18 .eh_frame + 19: 000000000001fdb8 0 SECTION LOCAL DEFAULT 19 .init_array + 20: 000000000001fdc0 0 SECTION LOCAL DEFAULT 20 .fini_array + 21: 000000000001fdc8 0 SECTION LOCAL DEFAULT 21 .dynamic + 22: 000000000001ffb8 0 SECTION LOCAL DEFAULT 22 .got + 23: 000000000001ffe8 0 SECTION LOCAL DEFAULT 23 .got.plt + 24: 0000000000020050 0 SECTION LOCAL DEFAULT 24 .data + 25: 0000000000020070 0 SECTION LOCAL DEFAULT 25 .bss + 26: 0000000000000000 0 SECTION LOCAL DEFAULT 26 .comment + 27: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 28: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 29: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 30: 0000000000000800 0 NOTYPE LOCAL DEFAULT 14 $x + 31: 0000000000000a04 0 NOTYPE LOCAL DEFAULT 18 $d + 32: 00000000000009ac 0 NOTYPE LOCAL DEFAULT 16 $d + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 34: 0000000000000834 0 NOTYPE LOCAL DEFAULT 14 $x + 35: 0000000000000834 20 FUNC LOCAL DEFAULT 14 call_weak_fn + 36: 0000000000000728 0 NOTYPE LOCAL DEFAULT 12 $x + 37: 0000000000000998 0 NOTYPE LOCAL DEFAULT 15 $x + 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x + 40: 00000000000009a4 0 NOTYPE LOCAL DEFAULT 15 $x + 41: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 42: 0000000000000850 0 NOTYPE LOCAL DEFAULT 14 $x + 43: 0000000000000850 0 FUNC LOCAL DEFAULT 14 deregister_tm_clones + 44: 0000000000000880 0 FUNC LOCAL DEFAULT 14 register_tm_clones + 45: 0000000000020058 0 NOTYPE LOCAL DEFAULT 24 $d + 46: 00000000000008c0 0 FUNC LOCAL DEFAULT 14 __do_global_dtors_aux + 47: 0000000000020070 1 OBJECT LOCAL DEFAULT 25 completed.0 + 48: 000000000001fdc0 0 NOTYPE LOCAL DEFAULT 20 $d + 49: 000000000001fdc0 0 OBJECT LOCAL DEFAULT 20 __do_global_dtors_aux_fini_array_entry + 50: 0000000000000910 0 FUNC LOCAL DEFAULT 14 frame_dummy + 51: 000000000001fdb8 0 NOTYPE LOCAL DEFAULT 19 $d + 52: 000000000001fdb8 0 OBJECT LOCAL DEFAULT 19 __frame_dummy_init_array_entry + 53: 0000000000000a18 0 NOTYPE LOCAL DEFAULT 18 $d + 54: 0000000000020070 0 NOTYPE LOCAL DEFAULT 25 $d + 55: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 56: 0000000000000914 0 NOTYPE LOCAL DEFAULT 14 $x.0 + 57: 0000000000020060 0 NOTYPE LOCAL DEFAULT 24 $d.1 + 58: 0000000000020078 0 NOTYPE LOCAL DEFAULT 25 $d.2 + 59: 000000000000001d 0 NOTYPE LOCAL DEFAULT 26 $d.3 + 60: 0000000000000a78 0 NOTYPE LOCAL DEFAULT 18 $d.4 + 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 62: 0000000000000abc 0 NOTYPE LOCAL DEFAULT 18 $d + 63: 0000000000000abc 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ + 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 66: 00000000000009b0 0 NOTYPE LOCAL DEFAULT 17 __GNU_EH_FRAME_HDR + 67: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 68: 0000000000000740 0 NOTYPE LOCAL DEFAULT 13 $x + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 71: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 72: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 73: 0000000000020050 0 NOTYPE WEAK DEFAULT 24 data_start + 74: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 25 __bss_start__ + 75: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 76: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 _bss_end__ + 77: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 _edata + 78: 0000000000000998 0 FUNC GLOBAL HIDDEN 15 _fini + 79: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 __bss_end__ + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 81: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 82: 0000000000020060 1 OBJECT GLOBAL DEFAULT 24 password + 83: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 24 __data_start + 84: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 85: 0000000000020058 0 OBJECT GLOBAL HIDDEN 24 __dso_handle + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 87: 00000000000009ac 4 OBJECT GLOBAL DEFAULT 16 _IO_stdin_used + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 89: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 _end + 90: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 91: 0000000000000800 52 FUNC GLOBAL DEFAULT 14 _start + 92: 0000000000020078 8 OBJECT GLOBAL DEFAULT 25 buf + 93: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 __end__ + 94: 0000000000020061 11 OBJECT GLOBAL DEFAULT 24 stext + 95: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 25 __bss_start + 96: 0000000000000914 132 FUNC GLOBAL DEFAULT 14 main + 97: 0000000000020070 0 OBJECT GLOBAL HIDDEN 24 __TMC_END__ + 98: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 99: 0000000000000728 0 FUNC GLOBAL HIDDEN 12 _init diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/config.mk b/src/test/correct/malloc_memcpy_strlen_memset_free/config.mk new file mode 100644 index 000000000..3d7367cb4 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/config.mk @@ -0,0 +1 @@ +ENABLED_COMPILERS = clang_O2 gcc_O2 diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/extraspec.bpl b/src/test/correct/malloc_memcpy_strlen_memset_free/extraspec.bpl new file mode 100644 index 000000000..be56c0989 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/extraspec.bpl @@ -0,0 +1,20 @@ + +function {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) returns (bool); +function {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) returns (bool); + + +var malloc_count: int; +var malloc_base: [int]bv64; +var malloc_end: [int]bv64; +var malloc_id: [bv64]int; + +var Gamma_malloc_count: bool; +var Gamma_malloc_base: bool; +var Gamma_malloc_end: bool; +var Gamma_malloc_id: bool; + + +// because named wrong in generated file +function {:inline} in_bounds64(base: bv64, len: bv64, i: bv64) returns (bool) { + (if bvule64(base, bvadd64(base, len)) then (bvule64(base, i) && bvult64(i, bvadd64(base, len))) else (bvule64(base, i) || bvult64(i, bvadd64(base, len)))) +} diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.adt b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..31a71ad9a --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,741 @@ +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 2452 20 2452)\n(code-region 1984 468 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2228)\n(code-start 2176)\n(code-start 1984)\n(entry-point 2176)\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 1984 132)\n(llvm:code-entry _start 2176 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 2452 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 2448 0)\n(llvm:code-entry __do_global_dtors_aux 2368 0)\n(llvm:code-entry register_tm_clones 2304 0)\n(llvm:code-entry deregister_tm_clones 2256 0)\n(llvm:code-entry call_weak_fn 2228 20)\n(llvm:code-entry .fini 2452 20)\n(llvm:code-entry .text 1984 468)\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 2476 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 676)\n(llvm:elf-program-header 02 0 2716)\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 2476 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 696)\n(llvm:elf-virtual-program-header 02 0 2716)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 2176)\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 68723)\n(llvm:section-entry .strtab 0 691 68032)\n(llvm:section-entry .symtab 0 2352 65680)\n(llvm:section-entry .comment 0 30 65644)\n(llvm:section-entry .bss 131184 16 65644)\n(llvm:section-entry .data 131152 28 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 2536 180 2536)\n(llvm:section-entry .eh_frame_hdr 2476 60 2476)\n(llvm:section-entry .rodata 2472 4 2472)\n(llvm:section-entry .fini 2452 20 2452)\n(llvm:section-entry .text 1984 468 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 1984 132 1984 1984)\n(llvm:symbol-entry _start 2176 52 2176 2176)\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 2452 0 2452 2452)\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 2448 0 2448 2448)\n(llvm:symbol-entry __do_global_dtors_aux 2368 0 2368 2368)\n(llvm:symbol-entry register_tm_clones 2304 0 2304 2304)\n(llvm:symbol-entry deregister_tm_clones 2256 0 2256 2256)\n(llvm:symbol-entry call_weak_fn 2228 20 2228 2228)\n(mapped 0 2716 0)\n(mapped 130504 676 64968)\n(named-region 0 2716 02)\n(named-region 130504 696 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 468 .text)\n(named-region 2452 20 .fini)\n(named-region 2472 4 .rodata)\n(named-region 2476 60 .eh_frame_hdr)\n(named-region 2536 180 .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 28 .data)\n(named-region 131184 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2228 call_weak_fn)\n(named-symbol 2256 deregister_tm_clones)\n(named-symbol 2304 register_tm_clones)\n(named-symbol 2368 __do_global_dtors_aux)\n(named-symbol 2448 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 2452 _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 2176 _start)\n(named-symbol 1984 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 468)\n(section 2452 20)\n(section 2472 4)\n(section 2476 60)\n(section 2536 180)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 28)\n(section 131184 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2716 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2228 20 2228)\n(symbol-chunk 2176 52 2176)\n(symbol-chunk 1984 132 1984)\n(symbol-value 2228 2228)\n(symbol-value 2256 2256)\n(symbol-value 2304 2304)\n(symbol-value 2368 2368)\n(symbol-value 2448 2448)\n(symbol-value 2452 2452)\n(symbol-value 2176 2176)\n(symbol-value 1984 1984)\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\x80\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x78\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\x9c\x0a\x00\x00\x00\x00\x00\x00\x9c\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\x80\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x78\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\x9c\x0a\x00\x00\x00\x00\x00\x00\x9c\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\xa4\x02\x00\x00\x00\x00\x00\x00\xb8\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\xac\x09\x00\x00\x00\x00\x00\x00\xac\x09\x00\x00\x00\x00\x00\x00\xac\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\x0c\x82\xbb\xc0\xf6\x83\xc0\x7c\xfe\x2d\xa5\x06\xf5\xc5\x85\xc1\x9b\xf8\x1a\x1b\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"), +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\x80\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x78\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\x9c\x0a\x00\x00\x00\x00\x00\x00\x9c\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\xa4\x02\x00\x00\x00\x00\x00\x00\xb8\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\xac\x09\x00\x00\x00\x00\x00\x00\xac\x09\x00\x00\x00\x00\x00\x00\xac\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\x0c\x82\xbb\xc0\xf6\x83\xc0\x7c\xfe\x2d\xa5\x06\xf5\xc5\x85\xc1\x9b\xf8\x1a\x1b\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\x90\x09\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x40\x09\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xc0\x07\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\x74\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\xfd\x7b\xbd\xa9\x60\x01\x80\xd2\xfd\x03\x00\x91\xf5\x13\x00\xf9\x15\x01\x00\x90\xf3\x53\x01\xa9\xde\xff\xff\x97\x14\x01\x00\x90\x94\x82\x01\x91\xf3\x03\x00\xaa\xe0\x03\x14\xaa\xb3\x3e\x00\xf9\xcc\xff\xff\x97\xe2\x03\x00\xaa\xe1\x03\x14\xaa\xe0\x03\x13\xaa\xc4\xff\xff\x97\xe0\x03\x13\xaa\xe2\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\xc3\xff\xff\x97\x21\x00\x80\x52\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xcf\xff\xff\x97\xa0\x3e\x40\xf9\xdd\xff\xff\x97\xf3\x53\x41\xa9\x00\x00\x80\x52\xf5\x13\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\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\xa1\xff\xff\x97\xb4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xac\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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"), +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\x80\x08\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\x0c\x82\xbb\xc0\xf6\x83\xc0\x7c\xfe\x2d\xa5\x06\xf5\xc5\x85\xc1\x9b\xf8\x1a\x1b"), +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\x90\x09\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x40\x09\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xc0\x07\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\x74\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", 0x994, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9A8, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9AC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x14\xfe\xff\xff\xc4\x00\x00\x00\xd4\xfe\xff\xff\x50\x00\x00\x00\x24\xff\xff\xff\x64\x00\x00\x00\x54\xff\xff\xff\x78\x00\x00\x00\x94\xff\xff\xff\x8c\x00\x00\x00\xe4\xff\xff\xff\xb0\x00\x00\x00"), +Section(".eh_frame", 0x9E8, "\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\x7c\xfe\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xb8\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\xd4\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x00\xff\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\x2c\xff\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x8c\x00\x00\x00\x48\xfd\xff\xff\x84\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x43\x95\x02\x42\x93\x04\x94\x03\x5a\xde\xdd\xd5\xd3\xd4\x0e\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x40\x09\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\x90\x09\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\x94\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(".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\xc0\x07\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\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00\x07"), +Section(".text", 0x7C0, "\xfd\x7b\xbd\xa9\x60\x01\x80\xd2\xfd\x03\x00\x91\xf5\x13\x00\xf9\x15\x01\x00\x90\xf3\x53\x01\xa9\xde\xff\xff\x97\x14\x01\x00\x90\x94\x82\x01\x91\xf3\x03\x00\xaa\xe0\x03\x14\xaa\xb3\x3e\x00\xf9\xcc\xff\xff\x97\xe2\x03\x00\xaa\xe1\x03\x14\xaa\xe0\x03\x13\xaa\xc4\xff\xff\x97\xe0\x03\x13\xaa\xe2\xff\xff\x97\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\xc3\xff\xff\x97\x21\x00\x80\x52\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xcf\xff\xff\x97\xa0\x3e\x40\xf9\xdd\xff\xff\x97\xf3\x53\x41\xa9\x00\x00\x80\x52\xf5\x13\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\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\xa1\xff\xff\x97\xb4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xac\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc2\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\x75\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xc2\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")]), +Memmap([Annotation(Region(0x0,0xA9B), Attr("segment","02 0 2716")), +Annotation(Region(0x7C0,0x843), Attr("symbol","\"main\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2B2), 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,0x843), Attr("symbol-info","main 0x7C0 132")), +Annotation(Region(0x880,0x8B3), Attr("symbol","\"_start\"")), +Annotation(Region(0x880,0x8B3), Attr("symbol-info","_start 0x880 52")), +Annotation(Region(0x8B4,0x8C7), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x8B4,0x8C7), Attr("symbol-info","call_weak_fn 0x8B4 20")), +Annotation(Region(0x994,0x9A7), Attr("section","\".fini\"")), +Annotation(Region(0x9A8,0x9AB), Attr("section","\".rodata\"")), +Annotation(Region(0x9AC,0x9E7), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9E8,0xA9B), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x993), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x993), Attr("code-region","()")), +Annotation(Region(0x994,0x9A7), Attr("code-region","()"))]), +Program(Tid(2_086, "%00000826"), Attrs([]), + Subs([Sub(Tid(2_015, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_087, "%00000827"), + 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_219, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_607, "%00000647"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_614, "%0000064e"), 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_620, "%00000654"), 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_625, "%00000659"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_016, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x940")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_088, "%00000828"), + 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(1_073, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x940")]), Phis([]), +Defs([Def(Tid(1_077, "%00000435"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#6",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(1_083, "%0000043b"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_089, "%00000441"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), 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_093, "%00000445"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#6",Imm(64))), Def(Tid(1_099, "%0000044b"), + Attrs([Attr("address","0x944"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_107, "%00000453"), + Attrs([Attr("address","0x948"), 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(1_112, "%00000458"), Attrs([Attr("address","0x94C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(1_119, "%0000045f"), Attrs([Attr("address","0x950"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(1_125, "%00000465"), Attrs([Attr("address","0x954"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), +Direct(Tid(1_123, "%00000463"))), Goto(Tid(2_076, "%0000081c"), Attrs([]), + Int(1,1), Direct(Tid(1_164, "%0000048c")))])), Blk(Tid(1_164, "%0000048c"), + Attrs([Attr("address","0x958")]), Phis([]), +Defs([Def(Tid(1_167, "%0000048f"), Attrs([Attr("address","0x958"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_174, "%00000496"), Attrs([Attr("address","0x95C"), +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_180, "%0000049c"), Attrs([Attr("address","0x960"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_178, "%0000049a"))), Goto(Tid(2_077, "%0000081d"), Attrs([]), + Int(1,1), Direct(Tid(1_203, "%000004b3")))])), Blk(Tid(1_203, "%000004b3"), + Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_206, "%000004b6"), Attrs([Attr("address","0x964"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x968"), +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_218, "%000004c2"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2416,64))]), +Jmps([Call(Tid(1_221, "%000004c5"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x22c")]), Int(1,1), +(Direct(Tid(2_015, "@__cxa_finalize")),Direct(Tid(1_178, "%0000049a"))))])), +Blk(Tid(1_178, "%0000049a"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_186, "%000004a2"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2420,64))]), +Jmps([Call(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_029, "@deregister_tm_clones")),Direct(Tid(1_190, "%000004a6"))))])), +Blk(Tid(1_190, "%000004a6"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_193, "%000004a9"), Attrs([Attr("address","0x974"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_201, "%000004b1"), Attrs([Attr("address","0x978"), +Attr("insn","strb w0, [x19, #0x70]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_078, "%0000081e"), Attrs([]), Int(1,1), +Direct(Tid(1_123, "%00000463")))])), Blk(Tid(1_123, "%00000463"), + Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_133, "%0000046d"), Attrs([Attr("address","0x97C"), +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_140, "%00000474"), Attrs([Attr("address","0x980"), +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(1_145, "%00000479"), Attrs([Attr("address","0x980"), +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(1_149, "%0000047d"), Attrs([Attr("address","0x980"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_154, "%00000482"), + Attrs([Attr("address","0x984"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_020, "@__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_089, "%00000829"), + 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_090, "%0000082a"), 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_091, "%0000082b"), 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_092, "%0000082c"), 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_093, "%0000082d"), 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(906, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_585, "%00000631"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_592, "%00000638"), 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_598, "%0000063e"), 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_603, "%00000643"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_021, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x994")]), + "_fini", Args([Arg(Tid(2_094, "%0000082e"), + 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","0x994")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x998"), +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","0x998"), +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","0x998"), +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","0x998"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x99C"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A0"), +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","0x9A0"), +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","0x9A0"), +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","0x9A4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_022, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_095, "%0000082f"), + 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_785, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_791, "%000006ff"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#8",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_797, "%00000705"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#8",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_803, "%0000070b"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#8",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_807, "%0000070f"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#8",Imm(64))), Def(Tid(1_813, "%00000715"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_818, "%0000071a"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x1d0")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_820, "%0000071c"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x1d0")]), Int(1,1), +(Direct(Tid(2_027, "@call_weak_fn")),Direct(Tid(1_822, "%0000071e"))))])), +Blk(Tid(1_822, "%0000071e"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_827, "%00000723"), 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(1_832, "%00000728"), 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(1_836, "%0000072c"), 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(1_841, "%00000731"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_023, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_096, "%00000830"), + 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(843, "@_start"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(848, "%00000350"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(853, "%00000355"), + Attrs([Attr("address","0x888"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(859, "%0000035b"), + Attrs([Attr("address","0x88C"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(866, "%00000362"), + Attrs([Attr("address","0x890"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(872, "%00000368"), Attrs([Attr("address","0x894"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(878, "%0000036e"), + Attrs([Attr("address","0x898"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(883, "%00000373"), + Attrs([Attr("address","0x89C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(890, "%0000037a"), + Attrs([Attr("address","0x8A0"), 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(895, "%0000037f"), Attrs([Attr("address","0x8A4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(900, "%00000384"), Attrs([Attr("address","0x8A8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(905, "%00000389"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(908, "%0000038c"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x17c")]), Int(1,1), +(Direct(Tid(2_020, "@__libc_start_main")),Direct(Tid(910, "%0000038e"))))])), +Blk(Tid(910, "%0000038e"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(913, "%00000391"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0x130")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(916, "%00000394"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0x130")]), Int(1,1), +(Direct(Tid(2_026, "@abort")),Direct(Tid(2_079, "%0000081f"))))])), +Blk(Tid(2_079, "%0000081f"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_080, "%00000820"), Attrs([]), Int(1,1), +(Direct(Tid(2_027, "@call_weak_fn")),))]))])), Sub(Tid(2_026, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(914, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_695, "%0000069f"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_702, "%000006a6"), 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_708, "%000006ac"), 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_713, "%000006b1"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_027, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8B4")]), + "call_weak_fn", Args([Arg(Tid(2_097, "%00000831"), + 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(918, "@call_weak_fn"), + Attrs([Attr("address","0x8B4")]), Phis([]), Defs([Def(Tid(921, "%00000399"), + Attrs([Attr("address","0x8B4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(928, "%000003a0"), + Attrs([Attr("address","0x8B8"), 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(934, "%000003a6"), Attrs([Attr("address","0x8BC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(932, "%000003a4"))), Goto(Tid(2_081, "%00000821"), Attrs([]), + Int(1,1), Direct(Tid(1_283, "%00000503")))])), Blk(Tid(932, "%000003a4"), + Attrs([Attr("address","0x8C4")]), Phis([]), Defs([]), +Jmps([Call(Tid(940, "%000003ac"), Attrs([Attr("address","0x8C4"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_283, "%00000503"), Attrs([Attr("address","0x8C0")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_286, "%00000506"), Attrs([Attr("address","0x8C0"), +Attr("insn","b #-0x150")]), Int(1,1), +Direct(Tid(1_284, "@__gmon_start__")))])), Blk(Tid(1_284, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_673, "%00000689"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_680, "%00000690"), 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_686, "%00000696"), 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_691, "%0000069b"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_029, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8D0")]), + "deregister_tm_clones", Args([Arg(Tid(2_098, "%00000832"), + 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(946, "@deregister_tm_clones"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([Def(Tid(949, "%000003b5"), + Attrs([Attr("address","0x8D0"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(955, "%000003bb"), + Attrs([Attr("address","0x8D4"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(960, "%000003c0"), Attrs([Attr("address","0x8D8"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(966, "%000003c6"), Attrs([Attr("address","0x8DC"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(972, "%000003cc"), + Attrs([Attr("address","0x8E0"), Attr("insn","cmp x1, x0")]), + Var("#4",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(977, "%000003d1"), + Attrs([Attr("address","0x8E0"), Attr("insn","cmp x1, x0")]), + Var("#5",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(983, "%000003d7"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#5",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#4",Imm(64)))),Int(1,65)))), +Def(Tid(989, "%000003dd"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#5",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#4",Imm(64)))),Int(1,65)))), +Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#5",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(997, "%000003e5"), + Attrs([Attr("address","0x8E0"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#5",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8E4"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(1_001, "%000003e9"))), Goto(Tid(2_082, "%00000822"), Attrs([]), + Int(1,1), Direct(Tid(1_253, "%000004e5")))])), Blk(Tid(1_253, "%000004e5"), + Attrs([Attr("address","0x8E8")]), Phis([]), +Defs([Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x8E8"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_263, "%000004ef"), Attrs([Attr("address","0x8EC"), +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_268, "%000004f4"), Attrs([Attr("address","0x8F0"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(1_001, "%000003e9"))), Goto(Tid(2_083, "%00000823"), Attrs([]), + Int(1,1), Direct(Tid(1_272, "%000004f8")))])), Blk(Tid(1_001, "%000003e9"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([]), +Jmps([Call(Tid(1_009, "%000003f1"), Attrs([Attr("address","0x8FC"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_272, "%000004f8"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_276, "%000004fc"), Attrs([Attr("address","0x8F4"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_281, "%00000501"), Attrs([Attr("address","0x8F8"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_032, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x990")]), "frame_dummy", Args([Arg(Tid(2_099, "%00000833"), + 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(1_160, "@frame_dummy"), + Attrs([Attr("address","0x990")]), Phis([]), Defs([]), +Jmps([Call(Tid(1_162, "%0000048a"), Attrs([Attr("address","0x990"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_039, "@register_tm_clones")),))]))])), Sub(Tid(2_033, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_100, "%00000834"), + 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(760, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_739, "%000006cb"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_746, "%000006d2"), 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_752, "%000006d8"), 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_757, "%000006dd"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_034, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x7C0")]), "main", Args([Arg(Tid(2_101, "%00000835"), + 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_102, "%00000836"), + 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_103, "%00000837"), + 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(553, "@main"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(557, "%0000022d"), + Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#1",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(563, "%00000233"), Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#1",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(569, "%00000239"), Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#1",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(573, "%0000023d"), Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#1",Imm(64))), Def(Tid(578, "%00000242"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x0, #0xb")]), + Var("R0",Imm(64)), Int(11,64)), Def(Tid(584, "%00000248"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(592, "%00000250"), + Attrs([Attr("address","0x7CC"), Attr("insn","str x21, [sp, #0x20]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Var("R21",Imm(64)),LittleEndian(),64)), +Def(Tid(597, "%00000255"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), +Def(Tid(603, "%0000025b"), Attrs([Attr("address","0x7D4"), +Attr("insn","stp x19, x20, [sp, #0x10]")]), Var("#2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64))), Def(Tid(609, "%00000261"), + Attrs([Attr("address","0x7D4"), Attr("insn","stp x19, x20, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#2",Imm(64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(615, "%00000267"), Attrs([Attr("address","0x7D4"), +Attr("insn","stp x19, x20, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#2",Imm(64)),Int(8,64)),Var("R20",Imm(64)),LittleEndian(),64)), +Def(Tid(620, "%0000026c"), Attrs([Attr("address","0x7D8"), +Attr("insn","bl #-0x88")]), Var("R30",Imm(64)), Int(2012,64))]), +Jmps([Call(Tid(623, "%0000026f"), Attrs([Attr("address","0x7D8"), +Attr("insn","bl #-0x88")]), Int(1,1), +(Direct(Tid(2_035, "@malloc")),Direct(Tid(625, "%00000271"))))])), +Blk(Tid(625, "%00000271"), Attrs([Attr("address","0x7DC")]), Phis([]), +Defs([Def(Tid(628, "%00000274"), Attrs([Attr("address","0x7DC"), +Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), +Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x7E0"), +Attr("insn","add x20, x20, #0x60")]), Var("R20",Imm(64)), +PLUS(Var("R20",Imm(64)),Int(96,64))), Def(Tid(640, "%00000280"), + Attrs([Attr("address","0x7E4"), Attr("insn","mov x19, x0")]), + Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(646, "%00000286"), + Attrs([Attr("address","0x7E8"), Attr("insn","mov x0, x20")]), + Var("R0",Imm(64)), Var("R20",Imm(64))), Def(Tid(654, "%0000028e"), + Attrs([Attr("address","0x7EC"), Attr("insn","str x19, [x21, #0x78]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(659, "%00000293"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0xd0")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(662, "%00000296"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0xd0")]), Int(1,1), +(Direct(Tid(2_042, "@strlen")),Direct(Tid(664, "%00000298"))))])), +Blk(Tid(664, "%00000298"), Attrs([Attr("address","0x7F4")]), Phis([]), +Defs([Def(Tid(668, "%0000029c"), Attrs([Attr("address","0x7F4"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x7F8"), +Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), +Def(Tid(680, "%000002a8"), Attrs([Attr("address","0x7FC"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x800"), +Attr("insn","bl #-0xf0")]), Var("R30",Imm(64)), Int(2052,64))]), +Jmps([Call(Tid(688, "%000002b0"), Attrs([Attr("address","0x800"), +Attr("insn","bl #-0xf0")]), Int(1,1), +(Direct(Tid(2_036, "@memcpy")),Direct(Tid(690, "%000002b2"))))])), +Blk(Tid(690, "%000002b2"), Attrs([Attr("address","0x804")]), Phis([]), +Defs([Def(Tid(694, "%000002b6"), Attrs([Attr("address","0x804"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(699, "%000002bb"), Attrs([Attr("address","0x808"), +Attr("insn","bl #-0x78")]), Var("R30",Imm(64)), Int(2060,64))]), +Jmps([Call(Tid(702, "%000002be"), Attrs([Attr("address","0x808"), +Attr("insn","bl #-0x78")]), Int(1,1), +(Direct(Tid(2_038, "@puts")),Direct(Tid(704, "%000002c0"))))])), +Blk(Tid(704, "%000002c0"), Attrs([Attr("address","0x80C")]), Phis([]), +Defs([Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x80C"), +Attr("insn","ldr x19, [x21, #0x78]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(715, "%000002cb"), Attrs([Attr("address","0x810"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(720, "%000002d0"), Attrs([Attr("address","0x814"), +Attr("insn","bl #-0xf4")]), Var("R30",Imm(64)), Int(2072,64))]), +Jmps([Call(Tid(722, "%000002d2"), Attrs([Attr("address","0x814"), +Attr("insn","bl #-0xf4")]), Int(1,1), +(Direct(Tid(2_042, "@strlen")),Direct(Tid(724, "%000002d4"))))])), +Blk(Tid(724, "%000002d4"), Attrs([Attr("address","0x818")]), Phis([]), +Defs([Def(Tid(727, "%000002d7"), Attrs([Attr("address","0x818"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(733, "%000002dd"), Attrs([Attr("address","0x81C"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(739, "%000002e3"), Attrs([Attr("address","0x820"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(744, "%000002e8"), Attrs([Attr("address","0x824"), +Attr("insn","bl #-0xc4")]), Var("R30",Imm(64)), Int(2088,64))]), +Jmps([Call(Tid(747, "%000002eb"), Attrs([Attr("address","0x824"), +Attr("insn","bl #-0xc4")]), Int(1,1), +(Direct(Tid(2_037, "@memset")),Direct(Tid(749, "%000002ed"))))])), +Blk(Tid(749, "%000002ed"), Attrs([Attr("address","0x828")]), Phis([]), +Defs([Def(Tid(754, "%000002f2"), Attrs([Attr("address","0x828"), +Attr("insn","ldr x0, [x21, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(759, "%000002f7"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0x8c")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(762, "%000002fa"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0x8c")]), Int(1,1), +(Direct(Tid(2_033, "@free")),Direct(Tid(764, "%000002fc"))))])), +Blk(Tid(764, "%000002fc"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(768, "%00000300"), Attrs([Attr("address","0x830"), +Attr("insn","ldp x19, x20, [sp, #0x10]")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64))), Def(Tid(773, "%00000305"), + Attrs([Attr("address","0x830"), Attr("insn","ldp x19, x20, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#3",Imm(64)),LittleEndian(),64)), +Def(Tid(778, "%0000030a"), Attrs([Attr("address","0x830"), +Attr("insn","ldp x19, x20, [sp, #0x10]")]), Var("R20",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(783, "%0000030f"), Attrs([Attr("address","0x834"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(790, "%00000316"), Attrs([Attr("address","0x838"), +Attr("insn","ldr x21, [sp, #0x20]")]), Var("R21",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),LittleEndian(),64)), +Def(Tid(797, "%0000031d"), Attrs([Attr("address","0x83C"), +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(802, "%00000322"), Attrs([Attr("address","0x83C"), +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(806, "%00000326"), Attrs([Attr("address","0x83C"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(811, "%0000032b"), + Attrs([Attr("address","0x840"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_035, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_104, "%00000838"), 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_105, "%00000839"), + 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(621, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_629, "%0000065d"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_636, "%00000664"), 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_642, "%0000066a"), 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_647, "%0000066f"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_036, "@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_106, "%0000083a"), 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_107, "%0000083b"), + 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_108, "%0000083c"), 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_109, "%0000083d"), 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(686, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_541, "%00000605"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_548, "%0000060c"), 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_554, "%00000612"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_559, "%00000617"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_037, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_110, "%0000083e"), 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_111, "%0000083f"), + 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_112, "%00000840"), + 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_113, "%00000841"), 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(745, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_651, "%00000673"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_658, "%0000067a"), 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_664, "%00000680"), 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_669, "%00000685"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_038, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_114, "%00000842"), 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_115, "%00000843"), 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(700, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_717, "%000006b5"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_724, "%000006bc"), 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_730, "%000006c2"), 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_735, "%000006c7"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_039, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), + "register_tm_clones", Args([Arg(Tid(2_116, "%00000844"), + 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(1_011, "@register_tm_clones"), + Attrs([Attr("address","0x900")]), Phis([]), +Defs([Def(Tid(1_014, "%000003f6"), Attrs([Attr("address","0x900"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_020, "%000003fc"), Attrs([Attr("address","0x904"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(1_025, "%00000401"), + Attrs([Attr("address","0x908"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_031, "%00000407"), + Attrs([Attr("address","0x90C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(1_038, "%0000040e"), Attrs([Attr("address","0x910"), +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(1_044, "%00000414"), Attrs([Attr("address","0x914"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(1_051, "%0000041b"), Attrs([Attr("address","0x918"), +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(1_057, "%00000421"), Attrs([Attr("address","0x91C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(1_063, "%00000427"), Attrs([Attr("address","0x920"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(1_061, "%00000425"))), Goto(Tid(2_084, "%00000824"), Attrs([]), + Int(1,1), Direct(Tid(1_223, "%000004c7")))])), Blk(Tid(1_223, "%000004c7"), + Attrs([Attr("address","0x924")]), Phis([]), +Defs([Def(Tid(1_226, "%000004ca"), Attrs([Attr("address","0x924"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_233, "%000004d1"), Attrs([Attr("address","0x928"), +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_238, "%000004d6"), Attrs([Attr("address","0x92C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(1_061, "%00000425"))), Goto(Tid(2_085, "%00000825"), Attrs([]), + Int(1,1), Direct(Tid(1_242, "%000004da")))])), Blk(Tid(1_061, "%00000425"), + Attrs([Attr("address","0x938")]), Phis([]), Defs([]), +Jmps([Call(Tid(1_069, "%0000042d"), Attrs([Attr("address","0x938"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_242, "%000004da"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_246, "%000004de"), Attrs([Attr("address","0x930"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_251, "%000004e3"), Attrs([Attr("address","0x934"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_042, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_117, "%00000845"), 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_118, "%00000846"), + 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(660, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_563, "%0000061b"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_570, "%00000622"), 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_576, "%00000628"), 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_581, "%0000062d"), + 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/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..c5b4e5f34 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,348 @@ +00000826: program +000007df: sub __cxa_finalize(__cxa_finalize_result) +00000827: __cxa_finalize_result :: out u32 = low:32[R0] + +000004c3: +00000647: R16 := 0x20000 +0000064e: R17 := mem[R16 + 0x18, el]:u64 +00000654: R16 := R16 + 0x18 +00000659: call R17 with noreturn + +000007e0: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000828: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +00000431: +00000435: #6 := R31 - 0x20 +0000043b: mem := mem with [#6, el]:u64 <- R29 +00000441: mem := mem with [#6 + 8, el]:u64 <- R30 +00000445: R31 := #6 +0000044b: R29 := R31 +00000453: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000458: R19 := 0x20000 +0000045f: R0 := pad:64[mem[R19 + 0x70]] +00000465: when 0:0[R0] goto %00000463 +0000081c: goto %0000048c + +0000048c: +0000048f: R0 := 0x1F000 +00000496: R0 := mem[R0 + 0xFC8, el]:u64 +0000049c: when R0 = 0 goto %0000049a +0000081d: goto %000004b3 + +000004b3: +000004b6: R0 := 0x20000 +000004bd: R0 := mem[R0 + 0x58, el]:u64 +000004c2: R30 := 0x970 +000004c5: call @__cxa_finalize with return %0000049a + +0000049a: +000004a2: R30 := 0x974 +000004a4: call @deregister_tm_clones with return %000004a6 + +000004a6: +000004a9: R0 := 1 +000004b1: mem := mem with [R19 + 0x70] <- 7:0[R0] +0000081e: goto %00000463 + +00000463: +0000046d: R19 := mem[R31 + 0x10, el]:u64 +00000474: R29 := mem[R31, el]:u64 +00000479: R30 := mem[R31 + 8, el]:u64 +0000047d: R31 := R31 + 0x20 +00000482: call R30 with noreturn + +000007e4: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000829: __libc_start_main_main :: in u64 = R0 +0000082a: __libc_start_main_arg2 :: in u32 = low:32[R1] +0000082b: __libc_start_main_arg3 :: in out u64 = R2 +0000082c: __libc_start_main_auxv :: in out u64 = R3 +0000082d: __libc_start_main_result :: out u32 = low:32[R0] + +0000038a: +00000631: R16 := 0x20000 +00000638: R17 := mem[R16 + 0x10, el]:u64 +0000063e: R16 := R16 + 0x10 +00000643: call R17 with noreturn + +000007e5: sub _fini(_fini_result) +0000082e: _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 + +000007e6: sub _init(_init_result) +0000082f: _init_result :: out u32 = low:32[R0] + +000006f9: +000006ff: #8 := R31 - 0x10 +00000705: mem := mem with [#8, el]:u64 <- R29 +0000070b: mem := mem with [#8 + 8, el]:u64 <- R30 +0000070f: R31 := #8 +00000715: R29 := R31 +0000071a: R30 := 0x6E8 +0000071c: call @call_weak_fn with return %0000071e + +0000071e: +00000723: R29 := mem[R31, el]:u64 +00000728: R30 := mem[R31 + 8, el]:u64 +0000072c: R31 := R31 + 0x10 +00000731: call R30 with noreturn + +000007e7: sub _start(_start_result) +00000830: _start_result :: out u32 = low:32[R0] + +0000034b: +00000350: R29 := 0 +00000355: R30 := 0 +0000035b: R5 := R0 +00000362: R1 := mem[R31, el]:u64 +00000368: R2 := R31 + 8 +0000036e: R6 := R31 +00000373: R0 := 0x1F000 +0000037a: R0 := mem[R0 + 0xFD8, el]:u64 +0000037f: R3 := 0 +00000384: R4 := 0 +00000389: R30 := 0x8B0 +0000038c: call @__libc_start_main with return %0000038e + +0000038e: +00000391: R30 := 0x8B4 +00000394: call @abort with return %0000081f + +0000081f: +00000820: call @call_weak_fn with noreturn + +000007ea: sub abort() + + +00000392: +0000069f: R16 := 0x20000 +000006a6: R17 := mem[R16 + 0x38, el]:u64 +000006ac: R16 := R16 + 0x38 +000006b1: call R17 with noreturn + +000007eb: sub call_weak_fn(call_weak_fn_result) +00000831: call_weak_fn_result :: out u32 = low:32[R0] + +00000396: +00000399: R0 := 0x1F000 +000003a0: R0 := mem[R0 + 0xFD0, el]:u64 +000003a6: when R0 = 0 goto %000003a4 +00000821: goto %00000503 + +000003a4: +000003ac: call R30 with noreturn + +00000503: +00000506: goto @__gmon_start__ + +00000504: +00000689: R16 := 0x20000 +00000690: R17 := mem[R16 + 0x30, el]:u64 +00000696: R16 := R16 + 0x30 +0000069b: call R17 with noreturn + +000007ed: sub deregister_tm_clones(deregister_tm_clones_result) +00000832: deregister_tm_clones_result :: out u32 = low:32[R0] + +000003b2: +000003b5: R0 := 0x20000 +000003bb: R0 := R0 + 0x70 +000003c0: R1 := 0x20000 +000003c6: R1 := R1 + 0x70 +000003cc: #4 := ~R0 +000003d1: #5 := R1 + ~R0 +000003d7: VF := extend:65[#5 + 1] <> extend:65[R1] + extend:65[#4] + 1 +000003dd: CF := pad:65[#5 + 1] <> pad:65[R1] + pad:65[#4] + 1 +000003e1: ZF := #5 + 1 = 0 +000003e5: NF := 63:63[#5 + 1] +000003eb: when ZF goto %000003e9 +00000822: goto %000004e5 + +000004e5: +000004e8: R1 := 0x1F000 +000004ef: R1 := mem[R1 + 0xFC0, el]:u64 +000004f4: when R1 = 0 goto %000003e9 +00000823: goto %000004f8 + +000003e9: +000003f1: call R30 with noreturn + +000004f8: +000004fc: R16 := R1 +00000501: call R16 with noreturn + +000007f0: sub frame_dummy(frame_dummy_result) +00000833: frame_dummy_result :: out u32 = low:32[R0] + +00000488: +0000048a: call @register_tm_clones with noreturn + +000007f1: sub free(free_ptr) +00000834: free_ptr :: in out u64 = R0 + +000002f8: +000006cb: R16 := 0x20000 +000006d2: R17 := mem[R16 + 0x48, el]:u64 +000006d8: R16 := R16 + 0x48 +000006dd: call R17 with noreturn + +000007f2: sub main(main_argc, main_argv, main_result) +00000835: main_argc :: in u32 = low:32[R0] +00000836: main_argv :: in out u64 = R1 +00000837: main_result :: out u32 = low:32[R0] + +00000229: +0000022d: #1 := R31 - 0x30 +00000233: mem := mem with [#1, el]:u64 <- R29 +00000239: mem := mem with [#1 + 8, el]:u64 <- R30 +0000023d: R31 := #1 +00000242: R0 := 0xB +00000248: R29 := R31 +00000250: mem := mem with [R31 + 0x20, el]:u64 <- R21 +00000255: R21 := 0x20000 +0000025b: #2 := R31 + 0x10 +00000261: mem := mem with [#2, el]:u64 <- R19 +00000267: mem := mem with [#2 + 8, el]:u64 <- R20 +0000026c: R30 := 0x7DC +0000026f: call @malloc with return %00000271 + +00000271: +00000274: R20 := 0x20000 +0000027a: R20 := R20 + 0x60 +00000280: R19 := R0 +00000286: R0 := R20 +0000028e: mem := mem with [R21 + 0x78, el]:u64 <- R19 +00000293: R30 := 0x7F4 +00000296: call @strlen with return %00000298 + +00000298: +0000029c: R2 := R0 +000002a2: R1 := R20 +000002a8: R0 := R19 +000002ad: R30 := 0x804 +000002b0: call @memcpy with return %000002b2 + +000002b2: +000002b6: R0 := R19 +000002bb: R30 := 0x80C +000002be: call @puts with return %000002c0 + +000002c0: +000002c5: R19 := mem[R21 + 0x78, el]:u64 +000002cb: R0 := R19 +000002d0: R30 := 0x818 +000002d2: call @strlen with return %000002d4 + +000002d4: +000002d7: R1 := 1 +000002dd: R2 := R0 +000002e3: R0 := R19 +000002e8: R30 := 0x828 +000002eb: call @memset with return %000002ed + +000002ed: +000002f2: R0 := mem[R21 + 0x78, el]:u64 +000002f7: R30 := 0x830 +000002fa: call @free with return %000002fc + +000002fc: +00000300: #3 := R31 + 0x10 +00000305: R19 := mem[#3, el]:u64 +0000030a: R20 := mem[#3 + 8, el]:u64 +0000030f: R0 := 0 +00000316: R21 := mem[R31 + 0x20, el]:u64 +0000031d: R29 := mem[R31, el]:u64 +00000322: R30 := mem[R31 + 8, el]:u64 +00000326: R31 := R31 + 0x30 +0000032b: call R30 with noreturn + +000007f3: sub malloc(malloc_size, malloc_result) +00000838: malloc_size :: in u64 = R0 +00000839: malloc_result :: out u64 = R0 + +0000026d: +0000065d: R16 := 0x20000 +00000664: R17 := mem[R16 + 0x20, el]:u64 +0000066a: R16 := R16 + 0x20 +0000066f: call R17 with noreturn + +000007f4: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +0000083a: memcpy_dst :: in out u64 = R0 +0000083b: memcpy_src :: in out u64 = R1 +0000083c: memcpy_n :: in u64 = R2 +0000083d: memcpy_result :: out u64 = R0 + +000002ae: +00000605: R16 := 0x20000 +0000060c: R17 := mem[R16, el]:u64 +00000612: R16 := R16 +00000617: call R17 with noreturn + +000007f5: sub memset(memset_buf, memset_c, memset_n, memset_result) +0000083e: memset_buf :: in out u64 = R0 +0000083f: memset_c :: in u32 = low:32[R1] +00000840: memset_n :: in u64 = R2 +00000841: memset_result :: out u64 = R0 + +000002e9: +00000673: R16 := 0x20000 +0000067a: R17 := mem[R16 + 0x28, el]:u64 +00000680: R16 := R16 + 0x28 +00000685: call R17 with noreturn + +000007f6: sub puts(puts_s, puts_result) +00000842: puts_s :: in u64 = R0 +00000843: puts_result :: out u32 = low:32[R0] + +000002bc: +000006b5: R16 := 0x20000 +000006bc: R17 := mem[R16 + 0x40, el]:u64 +000006c2: R16 := R16 + 0x40 +000006c7: call R17 with noreturn + +000007f7: sub register_tm_clones(register_tm_clones_result) +00000844: register_tm_clones_result :: out u32 = low:32[R0] + +000003f3: +000003f6: R0 := 0x20000 +000003fc: R0 := R0 + 0x70 +00000401: R1 := 0x20000 +00000407: R1 := R1 + 0x70 +0000040e: R1 := R1 + ~R0 + 1 +00000414: R2 := 0.63:63[R1] +0000041b: R1 := R2 + (R1 ~>> 3) +00000421: R1 := extend:64[63:1[R1]] +00000427: when R1 = 0 goto %00000425 +00000824: goto %000004c7 + +000004c7: +000004ca: R2 := 0x1F000 +000004d1: R2 := mem[R2 + 0xFE0, el]:u64 +000004d6: when R2 = 0 goto %00000425 +00000825: goto %000004da + +00000425: +0000042d: call R30 with noreturn + +000004da: +000004de: R16 := R2 +000004e3: call R16 with noreturn + +000007fa: sub strlen(strlen_s, strlen_result) +00000845: strlen_s :: in u64 = R0 +00000846: strlen_result :: out u64 = R0 + +00000294: +0000061b: R16 := 0x20000 +00000622: R17 := mem[R16 + 8, el]:u64 +00000628: R16 := R16 + 8 +0000062d: call R17 with noreturn diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..e24a49e85 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,809 @@ +var {:extern} Gamma_R0: bool; +var {:extern} Gamma_R1: bool; +var {:extern} Gamma_R16: bool; +var {:extern} Gamma_R17: bool; +var {:extern} Gamma_R19: bool; +var {:extern} Gamma_R2: bool; +var {:extern} Gamma_R20: bool; +var {:extern} Gamma_R21: bool; +var {:extern} Gamma_R29: bool; +var {:extern} Gamma_R30: bool; +var {:extern} Gamma_R31: bool; +var {:extern} Gamma_malloc_base: [bv64]bool; +var {:extern} Gamma_malloc_count: [bv64]bool; +var {:extern} Gamma_malloc_end: [bv64]bool; +var {:extern} Gamma_mem: [bv64]bool; +var {:extern} Gamma_stack: [bv64]bool; +var {:extern} R0: bv64; +var {:extern} R1: bv64; +var {:extern} R16: bv64; +var {:extern} R17: bv64; +var {:extern} R19: bv64; +var {:extern} R2: bv64; +var {:extern} R20: bv64; +var {:extern} R21: bv64; +var {:extern} R29: bv64; +var {:extern} R30: bv64; +var {:extern} R31: bv64; +var {:extern} malloc_base: [bv64]bv8; +var {:extern} malloc_count: [bv64]bv8; +var {:extern} malloc_end: [bv64]bv8; +var {:extern} mem: [bv64]bv8; +var {:extern} stack: [bv64]bv8; +const {:extern} $buf_addr: bv64; +axiom ($buf_addr == 131192bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131179bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131168bv64); +function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { + false +} + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); +function {:extern} gamma_load32(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) +} + +function {:extern} gamma_load64(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 7bv64)] && (gammaMap[bvadd64(index, 6bv64)] && (gammaMap[bvadd64(index, 5bv64)] && (gammaMap[bvadd64(index, 4bv64)] && (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))))))) +} + +function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { + gammaMap[index] +} + +function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + gammaMap[index := value][bvadd64(index, 1bv64) := value][bvadd64(index, 2bv64) := value][bvadd64(index, 3bv64) := value][bvadd64(index, 4bv64) := value][bvadd64(index, 5bv64) := value][bvadd64(index, 6bv64) := value][bvadd64(index, 7bv64) := value] +} + +function {:extern} memory_load64_le(memory: [bv64]bv8, index: bv64) returns (bv64) { + (memory[bvadd64(index, 7bv64)] ++ (memory[bvadd64(index, 6bv64)] ++ (memory[bvadd64(index, 5bv64)] ++ (memory[bvadd64(index, 4bv64)] ++ (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))))))) +} + +function {:extern} memory_load8_le(memory: [bv64]bv8, index: bv64) returns (bv8) { + memory[index] +} + +function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { + memory[index := value[8:0]][bvadd64(index, 1bv64) := value[16:8]][bvadd64(index, 2bv64) := value[24:16]][bvadd64(index, 3bv64) := value[32:24]][bvadd64(index, 4bv64) := value[40:32]][bvadd64(index, 5bv64) := value[48:40]][bvadd64(index, 6bv64) := value[56:48]][bvadd64(index, 7bv64) := value[64:56]] +} + +procedure {:extern} rely(); + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure {:extern} rely_transitive() + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); +{ + call rely(); + call rely(); +} + +procedure {:extern} rely_reflexive(); + +procedure {:extern} guarantee_reflexive(); + modifies Gamma_mem, mem; + +procedure #free(); + modifies Gamma_R16, Gamma_R17, R16, R17; + requires (forall i : int, j: bv64 :: (malloc_base[i] == R0 && bvuge64(j, R0) && bvult64(j, malloc_end[i])) ==> Gamma_mem[j]); + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure main() + modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, Gamma_R20, Gamma_R21, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, R20, R21, R29, R30, R31, malloc_base, malloc_count, malloc_end, mem, stack; + requires (gamma_load8(Gamma_mem, $password_addr) == false); + requires malloc_count == 0; + requires gamma_load32(Gamma_mem, memory_load64_le(mem, $stext_addr)); + requires R31 == 100bv64; + free requires (memory_load8_le(mem, 131152bv64) == 0bv8); + free requires (memory_load8_le(mem, 131153bv64) == 0bv8); + free requires (memory_load8_le(mem, 131154bv64) == 0bv8); + free requires (memory_load8_le(mem, 131155bv64) == 0bv8); + free requires (memory_load8_le(mem, 131156bv64) == 0bv8); + free requires (memory_load8_le(mem, 131157bv64) == 0bv8); + free requires (memory_load8_le(mem, 131158bv64) == 0bv8); + free requires (memory_load8_le(mem, 131159bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free requires (memory_load8_le(mem, 131168bv64) == 117bv8); + free requires (memory_load8_le(mem, 131169bv64) == 115bv8); + free requires (memory_load8_le(mem, 131170bv64) == 101bv8); + free requires (memory_load8_le(mem, 131171bv64) == 114bv8); + free requires (memory_load8_le(mem, 131172bv64) == 58bv8); + free requires (memory_load8_le(mem, 131173bv64) == 112bv8); + free requires (memory_load8_le(mem, 131174bv64) == 97bv8); + free requires (memory_load8_le(mem, 131175bv64) == 115bv8); + free requires (memory_load8_le(mem, 131176bv64) == 115bv8); + free requires (memory_load8_le(mem, 131177bv64) == 0bv8); + free requires (memory_load8_le(mem, 131178bv64) == 0bv8); + free requires (memory_load8_le(mem, 131179bv64) == 7bv8); + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (Gamma_R19 == old(Gamma_R19)); + free ensures (Gamma_R20 == old(Gamma_R20)); + free ensures (Gamma_R21 == old(Gamma_R21)); + free ensures (Gamma_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R19 == old(R19)); + free ensures (R20 == old(R20)); + free ensures (R21 == old(R21)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); +{ + var #1: bv64; + var #2: bv64; + var #3: bv64; + var Gamma_#1: bool; + var Gamma_#2: bool; + var Gamma_#3: bool; + lmain: + assume {:captureState "lmain"} true; + #1, Gamma_#1 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #1, R29), gamma_store64(Gamma_stack, #1, Gamma_R29); + assume {:captureState "%00000233"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#1, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#1, 8bv64), Gamma_R30); + assume {:captureState "%00000239"} true; + R31, Gamma_R31 := #1, Gamma_#1; + R0, Gamma_R0 := 11bv64, true; + R29, Gamma_R29 := R31, Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), R21), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), Gamma_R21); + assume {:captureState "%00000250"} true; + R21, Gamma_R21 := 131072bv64, true; + #2, Gamma_#2 := bvadd64(R31, 16bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #2, R19), gamma_store64(Gamma_stack, #2, Gamma_R19); + assume {:captureState "%00000261"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#2, 8bv64), R20), gamma_store64(Gamma_stack, bvadd64(#2, 8bv64), Gamma_R20); + assume {:captureState "%00000267"} true; + R30, Gamma_R30 := 2012bv64, true; + call malloc(); + goto l00000271; + l00000271: + assume {:captureState "l00000271"} true; + R20, Gamma_R20 := 131072bv64, true; + R20, Gamma_R20 := bvadd64(R20, 96bv64), Gamma_R20; + R19, Gamma_R19 := R0, Gamma_R0; + R0, Gamma_R0 := R20, Gamma_R20; + call rely(); + assert (L(mem, bvadd64(R21, 120bv64)) ==> Gamma_R19); + mem, Gamma_mem := memory_store64_le(mem, bvadd64(R21, 120bv64), R19), gamma_store64(Gamma_mem, bvadd64(R21, 120bv64), Gamma_R19); + assume {:captureState "%0000028e"} true; + R30, Gamma_R30 := 2036bv64, true; + call strlen(); + goto l00000298; + l00000298: + assume {:captureState "l00000298"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R1, Gamma_R1 := R20, Gamma_R20; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2052bv64, true; + call memcpy(); + goto l000002b2; + l000002b2: + assume {:captureState "l000002b2"} true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2060bv64, true; + call puts(); + goto l000002c0; + l000002c0: + assume {:captureState "l000002c0"} true; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, bvadd64(R21, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R21, 120bv64)) || L(mem, bvadd64(R21, 120bv64))); + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2072bv64, true; + call strlen(); + goto l000002d4; + l000002d4: + assume {:captureState "l000002d4"} true; + R1, Gamma_R1 := 1bv64, true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2088bv64, true; + call memset(); + goto l000002ed; + l000002ed: + assume {:captureState "l000002ed"} true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R21, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R21, 120bv64)) || L(mem, bvadd64(R21, 120bv64))); + R30, Gamma_R30 := 2096bv64, true; + call #free(); + goto l000002fc; + l000002fc: + assume {:captureState "l000002fc"} true; + #3, Gamma_#3 := bvadd64(R31, 16bv64), Gamma_R31; + R19, Gamma_R19 := memory_load64_le(stack, #3), gamma_load64(Gamma_stack, #3); + R20, Gamma_R20 := memory_load64_le(stack, bvadd64(#3, 8bv64)), gamma_load64(Gamma_stack, bvadd64(#3, 8bv64)); + R0, Gamma_R0 := 0bv64, true; + R21, Gamma_R21 := memory_load64_le(stack, bvadd64(R31, 32bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 32bv64)); + R29, Gamma_R29 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); + R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); + R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; + return; +} + +procedure malloc(); + modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, R0, R16, R17, malloc_base, malloc_count, malloc_end; + requires bvugt64(R0, 0bv64); + requires Gamma_R0 == true; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures Gamma_R0 == true; + ensures malloc_count == old(malloc_count) + 1; + ensures bvugt64(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); + ensures (forall i : bv64 :: (bvuge64(i, R0) && bvult64(i, bvadd64(R0, old(R0)))) ==> (Gamma_mem[i] && gamma_load8(Gamma_mem, i))); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure memcpy(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i, bvadd64(R0, R2))) then gamma_load8((Gamma_mem), bvadd64(bvsub64(i, R0), R1)) else old(gamma_load8(Gamma_mem, i)))); + ensures (forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le((mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i)))); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure memset(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + requires Gamma_R1; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures ((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)))); + ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then Gamma_R1 else old(gamma_load8(Gamma_mem, i)))); + 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)))); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure puts(); + modifies Gamma_R16, Gamma_R17, R16, R17; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure strlen(); + modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + 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 (bvult64(old(R0), bvadd64(bvadd64(old(R0), R0), 1bv64))); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.relf b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..30bb59fe2 --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.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 990 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 940 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 7c0 +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: 0000000000000994 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009a8 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009ac 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009e8 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: 0000000000020070 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: 0000000000000880 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 00000000000009fc 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009a8 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000008b4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000008b4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 0000000000000994 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009a0 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 41: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d + 43: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 44: 0000000000000a70 0 NOTYPE LOCAL DEFAULT 17 $d + 45: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 46: 00000000000008d0 0 NOTYPE LOCAL DEFAULT 13 $x + 47: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 48: 0000000000000900 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 49: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 50: 0000000000000940 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 51: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 + 52: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 53: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 54: 0000000000000990 0 FUNC LOCAL DEFAULT 13 frame_dummy + 55: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 56: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 57: 0000000000000a10 0 NOTYPE LOCAL DEFAULT 17 $d + 58: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000a98 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000a98 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009ac 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: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 0000000000000994 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020080 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: 000000000002006b 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: 00000000000009a8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 0000000000000880 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020060 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 00000000000007c0 132 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020070 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/example.c b/src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c similarity index 58% rename from examples/simplified_http_parse_basic/example.c rename to src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c index c8a695ad6..3def37000 100644 --- a/examples/simplified_http_parse_basic/example.c +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c @@ -2,35 +2,28 @@ #include #include -#define MALLOC_SIZE 4 -// times out with 64 bit buffer - -// 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] = "hel"; - - +char stext[11] = "user:pass"; int main() { char *pos = NULL, *dom = NULL; - - stext[2] = password; - buf = malloc(strlen(stext) + 1); - memcpy(buf, stext, strlen(stext) + 1); // inlined by -O2 + //memset(stext, 'h', 10); + // stext[5] = password; + buf = malloc(11); + // it only verifies if memcpy is the WHOLE string + memcpy(buf, stext, strlen(stext)); // inlined by -O2 puts(buf); // find the split between username and password ("username:password") - pos = buf + 1; + pos = buf + 4; // including this makes verification fail - // *pos = 0; + // *pos = 0; - memset(buf, 0, strlen(buf) + 1); + memset(buf, 1, strlen(buf)); free(buf); // requires secret[i] == true - } diff --git a/src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec b/src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec new file mode 100644 index 000000000..8b555e7eb --- /dev/null +++ b/src/test/correct/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec @@ -0,0 +1,56 @@ +Globals: +password: char +buf: long +stext: char[11] + +DIRECT functions: gamma_load64, gamma_load8, memory_load8_le, bvult64, bvule64, bvsub64, gamma_load32, bvuge64, bvugt64 + +Subroutine: #free + Requires DIRECT: "(forall i : int, j: bv64 :: (malloc_base[i] == R0 && bvuge64(j, R0) && bvult64(j, malloc_end[i])) ==> Gamma_mem[j])" + +Subroutine: main +Requires DIRECT: "malloc_count == 0" +Requires: Gamma_password == false +Requires DIRECT: "gamma_load32(Gamma_mem, memory_load64_le(mem, $stext_addr))" +Requires DIRECT: "R31 == 100bv64" + +Subroutine: malloc +Modifies: R0, malloc_base, malloc_count, malloc_end +Requires DIRECT: "bvugt64(R0, 0bv64)" +Requires DIRECT: "Gamma_R0 == true" +Ensures DIRECT: "Gamma_R0 == true" +Ensures DIRECT: "malloc_count == old(malloc_count) + 1" +Ensures DIRECT: "bvugt64(malloc_end[malloc_count], malloc_base[malloc_count])" +Ensures DIRECT: "R0 == malloc_base[malloc_count]" +Ensures DIRECT: "malloc_end[malloc_count] == bvadd64(R0, old(R0))" +Ensures DIRECT: "(forall i: int :: i != malloc_count ==> bvugt64(malloc_base[malloc_count], malloc_end[i]) || bvult64(malloc_end[malloc_count], malloc_base[i]))" +Ensures DIRECT: "(forall i: int :: i != malloc_count ==> malloc_base[i] == old(malloc_base[i]) && malloc_end[i] == old(malloc_end[i]))" +Ensures DIRECT: "bvuge64(R0, 100000000bv64)" +// uninitialised memory is low (free ensures since not part of modifies) +Ensures DIRECT: "(forall i : bv64 :: (bvuge64(i, R0) && bvult64(i, bvadd64(R0, old(R0)))) ==> (Gamma_mem[i] && gamma_load8(Gamma_mem, i)))" + + +Subroutine: memcpy + Modifies: mem + Ensures DIRECT: "(forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i, bvadd64(R0, R2))) then gamma_load8((Gamma_mem), bvadd64(bvsub64(i, R0), R1)) else old(gamma_load8(Gamma_mem, i))))" + Ensures DIRECT: "(forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le((mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i))))" + +// forall i <= n, Gamma_mem[R0] low +Subroutine: memset + Modifies: mem + Requires DIRECT: "Gamma_R1" + Ensures: buf == old(buf) && password == old(password) + Ensures DIRECT: "(forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then Gamma_R1 else old(gamma_load8(Gamma_mem, i))))" + 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))))" + + + +Subroutine: strlen + Modifies: R0 + Ensures DIRECT: "Gamma_R0 == true" + Ensures DIRECT: "(forall i: bv64 :: (bvule64(old(R0), i)) && (bvult64(i, bvadd64(old(R0), R0))) ==> mem[i] != 0bv8)" + Ensures DIRECT: "(memory_load8_le(mem, bvadd64(old(R0), R0)) == 0bv8)" + Ensures DIRECT: "(bvult64(old(R0), bvadd64(bvadd64(old(R0), R0), 1bv64)))" + + + diff --git a/src/test/incorrect/iflocal/config.mk b/src/test/incorrect/iflocal/config.mk new file mode 100644 index 000000000..bca075c70 --- /dev/null +++ b/src/test/incorrect/iflocal/config.mk @@ -0,0 +1 @@ +ENABLED_COMPILERS = clang clang_pic clang_no_plt_no_pic gcc gcc_pic gcc_no_plt_no_pic diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..480e83629 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,748 @@ +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 2464 20 2464)\n(code-region 2048 416 2048)\n(code-region 1856 192 1856)\n(code-region 1832 24 1832)\n(code-start 2100)\n(code-start 2048)\n(code-start 2324)\n(entry-point 2048)\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 1832 0)\n(llvm:code-entry main 2324 140)\n(llvm:code-entry _start 2048 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 2464 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 2320 0)\n(llvm:code-entry __do_global_dtors_aux 2240 0)\n(llvm:code-entry register_tm_clones 2176 0)\n(llvm:code-entry deregister_tm_clones 2128 0)\n(llvm:code-entry call_weak_fn 2100 20)\n(llvm:code-entry .fini 2464 20)\n(llvm:code-entry .text 2048 416)\n(llvm:code-entry .plt 1856 192)\n(llvm:code-entry .init 1832 24)\n(llvm:elf-program-header 08 64952 584)\n(llvm:elf-program-header 07 0 0)\n(llvm:elf-program-header 06 2488 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64968 496)\n(llvm:elf-program-header 03 64952 692)\n(llvm:elf-program-header 02 0 2760)\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 130488 584)\n(llvm:elf-virtual-program-header 07 0 0)\n(llvm:elf-virtual-program-header 06 2488 60)\n(llvm:elf-virtual-program-header 05 596 68)\n(llvm:elf-virtual-program-header 04 130504 496)\n(llvm:elf-virtual-program-header 03 130488 712)\n(llvm:elf-virtual-program-header 02 0 2760)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 2048)\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 68820)\n(llvm:section-entry .strtab 0 716 68104)\n(llvm:section-entry .symtab 0 2400 65704)\n(llvm:section-entry .comment 0 58 65644)\n(llvm:section-entry .bss 131184 16 65644)\n(llvm:section-entry .data 131152 28 65616)\n(llvm:section-entry .got.plt 131048 104 65512)\n(llvm:section-entry .got 131000 48 65464)\n(llvm:section-entry .dynamic 130504 496 64968)\n(llvm:section-entry .fini_array 130496 8 64960)\n(llvm:section-entry .init_array 130488 8 64952)\n(llvm:section-entry .eh_frame 2552 208 2552)\n(llvm:section-entry .eh_frame_hdr 2488 60 2488)\n(llvm:section-entry .rodata 2484 4 2484)\n(llvm:section-entry .fini 2464 20 2464)\n(llvm:section-entry .text 2048 416 2048)\n(llvm:section-entry .plt 1856 192 1856)\n(llvm:section-entry .init 1832 24 1832)\n(llvm:section-entry .rela.plt 1592 240 1592)\n(llvm:section-entry .rela.dyn 1400 192 1400)\n(llvm:section-entry .gnu.version_r 1352 48 1352)\n(llvm:section-entry .gnu.version 1316 30 1316)\n(llvm:section-entry .dynstr 1136 179 1136)\n(llvm:section-entry .dynsym 776 360 776)\n(llvm:section-entry .gnu.hash 744 28 744)\n(llvm:section-entry .hash 664 80 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 .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 1832 0 1832 1832)\n(llvm:symbol-entry main 2324 140 2324 2324)\n(llvm:symbol-entry _start 2048 52 2048 2048)\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 2464 0 2464 2464)\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 2320 0 2320 2320)\n(llvm:symbol-entry __do_global_dtors_aux 2240 0 2240 2240)\n(llvm:symbol-entry register_tm_clones 2176 0 2176 2176)\n(llvm:symbol-entry deregister_tm_clones 2128 0 2128 2128)\n(llvm:symbol-entry call_weak_fn 2100 20 2100 2100)\n(mapped 0 2760 0)\n(mapped 130488 692 64952)\n(named-region 0 2760 02)\n(named-region 130488 712 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 80 .hash)\n(named-region 744 28 .gnu.hash)\n(named-region 776 360 .dynsym)\n(named-region 1136 179 .dynstr)\n(named-region 1316 30 .gnu.version)\n(named-region 1352 48 .gnu.version_r)\n(named-region 1400 192 .rela.dyn)\n(named-region 1592 240 .rela.plt)\n(named-region 1832 24 .init)\n(named-region 1856 192 .plt)\n(named-region 2048 416 .text)\n(named-region 2464 20 .fini)\n(named-region 2484 4 .rodata)\n(named-region 2488 60 .eh_frame_hdr)\n(named-region 2552 208 .eh_frame)\n(named-region 130488 8 .init_array)\n(named-region 130496 8 .fini_array)\n(named-region 130504 496 .dynamic)\n(named-region 131000 48 .got)\n(named-region 131048 104 .got.plt)\n(named-region 131152 28 .data)\n(named-region 131184 16 .bss)\n(named-region 0 58 .comment)\n(named-region 0 2400 .symtab)\n(named-region 0 716 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2100 call_weak_fn)\n(named-symbol 2128 deregister_tm_clones)\n(named-symbol 2176 register_tm_clones)\n(named-symbol 2240 __do_global_dtors_aux)\n(named-symbol 2320 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 2464 _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 2048 _start)\n(named-symbol 2324 main)\n(named-symbol 1832 _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 80)\n(section 744 28)\n(section 776 360)\n(section 1136 179)\n(section 1316 30)\n(section 1352 48)\n(section 1400 192)\n(section 1592 240)\n(section 1832 24)\n(section 1856 192)\n(section 2048 416)\n(section 2464 20)\n(section 2484 4)\n(section 2488 60)\n(section 2552 208)\n(section 130488 8)\n(section 130496 8)\n(section 130504 496)\n(section 131000 48)\n(section 131048 104)\n(section 131152 28)\n(section 131184 16)\n(section 0 58)\n(section 0 2400)\n(section 0 716)\n(section 0 259)\n(segment 0 2760 true false true)\n(segment 130488 712 true true false)\n(subarch v8)\n(symbol-chunk 2100 20 2100)\n(symbol-chunk 2048 52 2048)\n(symbol-chunk 2324 140 2324)\n(symbol-value 2100 2100)\n(symbol-value 2128 2128)\n(symbol-value 2176 2176)\n(symbol-value 2240 2240)\n(symbol-value 2320 2320)\n(symbol-value 2464 2464)\n(symbol-value 2048 2048)\n(symbol-value 2324 2324)\n(symbol-value 1832 1832)\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xd8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1e\x00\x1d\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\xc8\x0a\x00\x00\x00\x00\x00\x00\xc8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xd8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1e\x00\x1d\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\xc8\x0a\x00\x00\x00\x00\x00\x00\xc8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\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\xf0\x01\x00\x00\x00\x00\x00\x00\xf0\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\xb8\x09\x00\x00\x00\x00\x00\x00\xb8\x09\x00\x00\x00\x00\x00\x00\xb8\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\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\x48\x02\x00\x00\x00\x00\x00\x00\x48\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\x15\xf3\x7a\xcd\x66\xb4\xb5\xc0\xdd\x26\xd5\x87\xd5\x89\xec\xc4\x7f\x24\x9b\xdd\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\x03\x00\x00\x00\x0f\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xd8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\x00\x40\x00\x1e\x00\x1d\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\xc8\x0a\x00\x00\x00\x00\x00\x00\xc8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb4\x02\x00\x00\x00\x00\x00\x00\xc8\x02\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\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\xf0\x01\x00\x00\x00\x00\x00\x00\xf0\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\xb8\x09\x00\x00\x00\x00\x00\x00\xb8\x09\x00\x00\x00\x00\x00\x00\xb8\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\xb8\xfd\x00\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\xb8\xfd\x01\x00\x00\x00\x00\x00\x48\x02\x00\x00\x00\x00\x00\x00\x48\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\x15\xf3\x7a\xcd\x66\xb4\xb5\xc0\xdd\x26\xd5\x87\xd5\x89\xec\xc4\x7f\x24\x9b\xdd\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\x03\x00\x00\x00\x0f\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x06\x00\x00\x00\x0c\x00\x00\x00\x0d\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\x0c\x00\x28\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x18\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\xb8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x10\x09\x00\x00\x00\x00\x00\x00\xc0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xc0\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x14\x09\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\x40\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\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\xd5\xff\xff\x97\xe8\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xe0\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc2\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\xa9\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xc2\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\xf5\x0b\x00\xf9\xf4\x4f\x02\xa9\xfd\x03\x00\x91\x60\x01\x80\x52\x9e\xff\xff\x97\x15\x01\x00\x90\x14\x01\x00\x90\x94\x86\x01\x91\xf3\x03\x00\xaa\xa0\x3e\x00\xf9\xe0\x03\x14\xaa\x8b\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x83\xff\xff\x97\xe0\x03\x13\xaa\xa1\xff\xff\x97"), +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\x00\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\xd8\x0d\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x38\x00\x09\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\x15\xf3\x7a\xcd\x66\xb4\xb5\xc0\xdd\x26\xd5\x87\xd5\x89\xec\xc4\x7f\x24\x9b\xdd"), +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(".hash", 0x298, "\x03\x00\x00\x00\x0f\x00\x00\x00\x0a\x00\x00\x00\x0e\x00\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x03\x00\x00\x00\x09\x00\x00\x00\x08\x00\x00\x00\x06\x00\x00\x00\x0c\x00\x00\x00\x0d\x00\x00\x00"), +Section(".gnu.hash", 0x2E8, "\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", 0x308, "\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\x0c\x00\x28\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x18\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", 0x470, "\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", 0x524, "\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", 0x548, "\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", 0x578, "\xb8\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x10\x09\x00\x00\x00\x00\x00\x00\xc0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xc0\x08\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x14\x09\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", 0x638, "\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", 0x728, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\x40\x00\x00\x94\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".plt", 0x740, "\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", 0x9A0, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9B4, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9B8, "\x01\x1b\x03\x3b\x3c\x00\x00\x00\x06\x00\x00\x00\x48\xfe\xff\xff\x54\x00\x00\x00\x98\xfe\xff\xff\x68\x00\x00\x00\xc8\xfe\xff\xff\x7c\x00\x00\x00\x08\xff\xff\xff\x90\x00\x00\x00\x58\xff\xff\xff\xb4\x00\x00\x00\x5c\xff\xff\xff\xdc\x00\x00\x00"), +Section(".eh_frame", 0x9F8, "\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\xec\xfd\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\x28\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\x44\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x70\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\x9c\xfe\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x01\x7a\x52\x00\x01\x7c\x1e\x01\x1b\x0c\x1f\x00\x2c\x00\x00\x00\x18\x00\x00\x00\x78\xfe\xff\xff\x8c\x00\x00\x00\x00\x44\x0e\x30\x4c\x0c\x1d\x30\x93\x02\x94\x04\x95\x08\x9e\x0a\x9d\x0c\x02\x6c\x0c\x1f\x30\x4c\x0e\x00\xd3\xd4\xd5\xde\xdd\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDC0, "\xc0\x08\x00\x00\x00\x00\x00\x00"), +Section(".dynamic", 0x1FDC8, "\x01\x00\x00\x00\x00\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x00\x00\x0c\x00\x00\x00\x00\x00\x00\x00\x28\x07\x00\x00\x00\x00\x00\x00\x0d\x00\x00\x00\x00\x00\x00\x00\xa0\x09\x00\x00\x00\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\xb8\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\xc0\xfd\x01\x00\x00\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x98\x02\x00\x00\x00\x00\x00\x00\xf5\xfe\xff\x6f\x00\x00\x00\x00\xe8\x02\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x70\x04\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x08\x03\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\x38\x06\x00\x00\x00\x00\x00\x00\x07\x00\x00\x00\x00\x00\x00\x00\x78\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\x48\x05\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\x24\x05\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", 0x1FDB8, "\x10\x09\x00\x00\x00\x00\x00\x00"), +Section(".got", 0x1FFB8, "\xc8\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\x14\x09\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\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\x00\x00\x00\x00\x00\x00\x40\x07\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\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00"), +Section(".text", 0x800, "\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\xd5\xff\xff\x97\xe8\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xe0\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc2\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\xa9\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xc2\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\xf5\x0b\x00\xf9\xf4\x4f\x02\xa9\xfd\x03\x00\x91\x60\x01\x80\x52\x9e\xff\xff\x97\x15\x01\x00\x90\x14\x01\x00\x90\x94\x86\x01\x91\xf3\x03\x00\xaa\xa0\x3e\x00\xf9\xe0\x03\x14\xaa\x8b\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xe1\x03\x14\xaa\x83\xff\xff\x97\xe0\x03\x13\xaa\xa1\xff\xff\x97\xa8\x3e\x40\xf9\x1f\x11\x00\x39\xb3\x3e\x40\xf9\xe0\x03\x13\xaa\x80\xff\xff\x97\xe2\x03\x00\xaa\xe0\x03\x13\xaa\x21\x00\x80\x52\x8c\xff\xff\x97\xa0\x3e\x40\xf9\x9a\xff\xff\x97\xe0\x03\x1f\x2a\xf4\x4f\x42\xa9\xf5\x0b\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6")]), +Memmap([Annotation(Region(0x0,0xAC7), Attr("segment","02 0 2760")), +Annotation(Region(0x800,0x833), Attr("symbol","\"_start\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2CB), Attr("section","\".strtab\"")), +Annotation(Region(0x0,0x95F), Attr("section","\".symtab\"")), +Annotation(Region(0x0,0x39), 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,0x2E7), Attr("section","\".hash\"")), +Annotation(Region(0x2E8,0x303), Attr("section","\".gnu.hash\"")), +Annotation(Region(0x308,0x46F), Attr("section","\".dynsym\"")), +Annotation(Region(0x470,0x522), Attr("section","\".dynstr\"")), +Annotation(Region(0x524,0x541), Attr("section","\".gnu.version\"")), +Annotation(Region(0x548,0x577), Attr("section","\".gnu.version_r\"")), +Annotation(Region(0x578,0x637), Attr("section","\".rela.dyn\"")), +Annotation(Region(0x638,0x727), Attr("section","\".rela.plt\"")), +Annotation(Region(0x728,0x73F), Attr("section","\".init\"")), +Annotation(Region(0x740,0x7FF), Attr("section","\".plt\"")), +Annotation(Region(0x728,0x73F), Attr("code-region","()")), +Annotation(Region(0x740,0x7FF), Attr("code-region","()")), +Annotation(Region(0x800,0x833), Attr("symbol-info","_start 0x800 52")), +Annotation(Region(0x834,0x847), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x834,0x847), Attr("symbol-info","call_weak_fn 0x834 20")), +Annotation(Region(0x914,0x99F), Attr("symbol","\"main\"")), +Annotation(Region(0x914,0x99F), Attr("symbol-info","main 0x914 140")), +Annotation(Region(0x9A0,0x9B3), Attr("section","\".fini\"")), +Annotation(Region(0x9B4,0x9B7), Attr("section","\".rodata\"")), +Annotation(Region(0x9B8,0x9F3), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9F8,0xAC7), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDB8,0x2006B), Attr("segment","03 0x1FDB8 712")), +Annotation(Region(0x1FDC0,0x1FDC7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDC8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FDB8,0x1FDBF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x800,0x99F), Attr("section","\".text\"")), +Annotation(Region(0x800,0x99F), Attr("code-region","()")), +Annotation(Region(0x9A0,0x9B3), Attr("code-region","()"))]), +Program(Tid(2_116, "%00000844"), Attrs([]), + Subs([Sub(Tid(2_045, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x790"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_117, "%00000845"), + 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_151, "@__cxa_finalize"), + Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_539, "%00000603"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_546, "%0000060a"), Attrs([Attr("address","0x794"), +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_552, "%00000610"), Attrs([Attr("address","0x798"), +Attr("insn","add x16, x16, #0x18")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(24,64)))]), Jmps([Call(Tid(1_557, "%00000615"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_046, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8C0")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_118, "%00000846"), + 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(731, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x8C0")]), Phis([]), Defs([Def(Tid(735, "%000002df"), + Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(741, "%000002e5"), Attrs([Attr("address","0x8C0"), +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(747, "%000002eb"), Attrs([Attr("address","0x8C0"), +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(751, "%000002ef"), Attrs([Attr("address","0x8C0"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#3",Imm(64))), Def(Tid(757, "%000002f5"), + Attrs([Attr("address","0x8C4"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(765, "%000002fd"), + Attrs([Attr("address","0x8C8"), 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(770, "%00000302"), Attrs([Attr("address","0x8CC"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(777, "%00000309"), Attrs([Attr("address","0x8D0"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(783, "%0000030f"), Attrs([Attr("address","0x8D4"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), Direct(Tid(781, "%0000030d"))), +Goto(Tid(2_106, "%0000083a"), Attrs([]), Int(1,1), +Direct(Tid(1_096, "%00000448")))])), Blk(Tid(1_096, "%00000448"), + Attrs([Attr("address","0x8D8")]), Phis([]), +Defs([Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x8D8"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_106, "%00000452"), Attrs([Attr("address","0x8DC"), +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_112, "%00000458"), Attrs([Attr("address","0x8E0"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_110, "%00000456"))), Goto(Tid(2_107, "%0000083b"), Attrs([]), + Int(1,1), Direct(Tid(1_135, "%0000046f")))])), Blk(Tid(1_135, "%0000046f"), + Attrs([Attr("address","0x8E4")]), Phis([]), +Defs([Def(Tid(1_138, "%00000472"), Attrs([Attr("address","0x8E4"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_145, "%00000479"), Attrs([Attr("address","0x8E8"), +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_150, "%0000047e"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Var("R30",Imm(64)), Int(2288,64))]), +Jmps([Call(Tid(1_153, "%00000481"), Attrs([Attr("address","0x8EC"), +Attr("insn","bl #-0x15c")]), Int(1,1), +(Direct(Tid(2_045, "@__cxa_finalize")),Direct(Tid(1_110, "%00000456"))))])), +Blk(Tid(1_110, "%00000456"), Attrs([Attr("address","0x8F0")]), Phis([]), +Defs([Def(Tid(1_118, "%0000045e"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2292,64))]), +Jmps([Call(Tid(1_120, "%00000460"), Attrs([Attr("address","0x8F0"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_059, "@deregister_tm_clones")),Direct(Tid(1_122, "%00000462"))))])), +Blk(Tid(1_122, "%00000462"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_125, "%00000465"), Attrs([Attr("address","0x8F4"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_133, "%0000046d"), Attrs([Attr("address","0x8F8"), +Attr("insn","strb w0, [x19, #0x70]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_108, "%0000083c"), Attrs([]), Int(1,1), +Direct(Tid(781, "%0000030d")))])), Blk(Tid(781, "%0000030d"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([Def(Tid(791, "%00000317"), + Attrs([Attr("address","0x8FC"), 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(798, "%0000031e"), Attrs([Attr("address","0x900"), +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(803, "%00000323"), Attrs([Attr("address","0x900"), +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(807, "%00000327"), Attrs([Attr("address","0x900"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(812, "%0000032c"), + Attrs([Attr("address","0x904"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_050, "@__libc_start_main"), + Attrs([Attr("c.proto","signed (*)(signed (*)(signed , char** , char** );* main, signed , char** , \nvoid* auxv)"), +Attr("address","0x780"), Attr("stub","()")]), "__libc_start_main", + Args([Arg(Tid(2_119, "%00000847"), + 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_120, "%00000848"), 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_121, "%00000849"), 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_122, "%0000084a"), 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_123, "%0000084b"), 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(564, "@__libc_start_main"), + Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_517, "%000005ed"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_524, "%000005f4"), Attrs([Attr("address","0x784"), +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_530, "%000005fa"), Attrs([Attr("address","0x788"), +Attr("insn","add x16, x16, #0x10")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_535, "%000005ff"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_051, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x9A0")]), + "_fini", Args([Arg(Tid(2_124, "%0000084c"), + 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","0x9A0")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x9A4"), +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","0x9A4"), +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","0x9A4"), +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","0x9A4"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x9A8"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9AC"), +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","0x9AC"), +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","0x9AC"), +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","0x9B0"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_052, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x728")]), + "_init", Args([Arg(Tid(2_125, "%0000084d"), + 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_828, "@_init"), + Attrs([Attr("address","0x728")]), Phis([]), +Defs([Def(Tid(1_834, "%0000072a"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#8",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_840, "%00000730"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#8",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_846, "%00000736"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#8",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_850, "%0000073a"), Attrs([Attr("address","0x72C"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#8",Imm(64))), Def(Tid(1_856, "%00000740"), + Attrs([Attr("address","0x730"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_861, "%00000745"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), + Var("R30",Imm(64)), Int(1848,64))]), Jmps([Call(Tid(1_863, "%00000747"), + Attrs([Attr("address","0x734"), Attr("insn","bl #0x100")]), Int(1,1), +(Direct(Tid(2_057, "@call_weak_fn")),Direct(Tid(1_865, "%00000749"))))])), +Blk(Tid(1_865, "%00000749"), Attrs([Attr("address","0x738")]), Phis([]), +Defs([Def(Tid(1_870, "%0000074e"), Attrs([Attr("address","0x738"), +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(1_875, "%00000753"), Attrs([Attr("address","0x738"), +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(1_879, "%00000757"), Attrs([Attr("address","0x738"), +Attr("insn","ldp x29, x30, [sp], #0x10")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64)))]), Jmps([Call(Tid(1_884, "%0000075c"), + Attrs([Attr("address","0x73C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_053, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x800"), +Attr("stub","()"), Attr("entry-point","()")]), "_start", + Args([Arg(Tid(2_126, "%0000084e"), 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(501, "@_start"), Attrs([Attr("address","0x800")]), Phis([]), +Defs([Def(Tid(506, "%000001fa"), Attrs([Attr("address","0x804"), +Attr("insn","mov x29, #0x0")]), Var("R29",Imm(64)), Int(0,64)), +Def(Tid(511, "%000001ff"), Attrs([Attr("address","0x808"), +Attr("insn","mov x30, #0x0")]), Var("R30",Imm(64)), Int(0,64)), +Def(Tid(517, "%00000205"), Attrs([Attr("address","0x80C"), +Attr("insn","mov x5, x0")]), Var("R5",Imm(64)), Var("R0",Imm(64))), +Def(Tid(524, "%0000020c"), Attrs([Attr("address","0x810"), +Attr("insn","ldr x1, [sp]")]), Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(530, "%00000212"), Attrs([Attr("address","0x814"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(536, "%00000218"), + Attrs([Attr("address","0x818"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(541, "%0000021d"), + Attrs([Attr("address","0x81C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(548, "%00000224"), + Attrs([Attr("address","0x820"), 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(553, "%00000229"), Attrs([Attr("address","0x824"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(558, "%0000022e"), Attrs([Attr("address","0x828"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(563, "%00000233"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(566, "%00000236"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xac")]), Int(1,1), +(Direct(Tid(2_050, "@__libc_start_main")),Direct(Tid(568, "%00000238"))))])), +Blk(Tid(568, "%00000238"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(571, "%0000023b"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Var("R30",Imm(64)), Int(2100,64))]), +Jmps([Call(Tid(574, "%0000023e"), Attrs([Attr("address","0x830"), +Attr("insn","bl #-0x60")]), Int(1,1), +(Direct(Tid(2_056, "@abort")),Direct(Tid(2_109, "%0000083d"))))])), +Blk(Tid(2_109, "%0000083d"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_110, "%0000083e"), Attrs([]), Int(1,1), +(Direct(Tid(2_057, "@call_weak_fn")),))]))])), Sub(Tid(2_056, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x7D0"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(572, "@abort"), Attrs([Attr("address","0x7D0")]), Phis([]), +Defs([Def(Tid(1_627, "%0000065b"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_634, "%00000662"), Attrs([Attr("address","0x7D4"), +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_640, "%00000668"), Attrs([Attr("address","0x7D8"), +Attr("insn","add x16, x16, #0x38")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(56,64)))]), Jmps([Call(Tid(1_645, "%0000066d"), + Attrs([Attr("address","0x7DC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_057, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x834")]), + "call_weak_fn", Args([Arg(Tid(2_127, "%0000084f"), + 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(576, "@call_weak_fn"), + Attrs([Attr("address","0x834")]), Phis([]), Defs([Def(Tid(579, "%00000243"), + Attrs([Attr("address","0x834"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(586, "%0000024a"), + Attrs([Attr("address","0x838"), 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(592, "%00000250"), Attrs([Attr("address","0x83C"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(590, "%0000024e"))), Goto(Tid(2_111, "%0000083f"), Attrs([]), + Int(1,1), Direct(Tid(1_215, "%000004bf")))])), Blk(Tid(590, "%0000024e"), + Attrs([Attr("address","0x844")]), Phis([]), Defs([]), +Jmps([Call(Tid(598, "%00000256"), Attrs([Attr("address","0x844"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_215, "%000004bf"), Attrs([Attr("address","0x840")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_218, "%000004c2"), Attrs([Attr("address","0x840"), +Attr("insn","b #-0x80")]), Int(1,1), +Direct(Tid(1_216, "@__gmon_start__")))])), Blk(Tid(1_216, "@__gmon_start__"), + Attrs([Attr("address","0x7C0")]), Phis([]), +Defs([Def(Tid(1_605, "%00000645"), Attrs([Attr("address","0x7C0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_612, "%0000064c"), Attrs([Attr("address","0x7C4"), +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_618, "%00000652"), Attrs([Attr("address","0x7C8"), +Attr("insn","add x16, x16, #0x30")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_623, "%00000657"), + Attrs([Attr("address","0x7CC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_059, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x850")]), + "deregister_tm_clones", Args([Arg(Tid(2_128, "%00000850"), + 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(604, "@deregister_tm_clones"), + Attrs([Attr("address","0x850")]), Phis([]), Defs([Def(Tid(607, "%0000025f"), + Attrs([Attr("address","0x850"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(613, "%00000265"), + Attrs([Attr("address","0x854"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(618, "%0000026a"), Attrs([Attr("address","0x858"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(624, "%00000270"), Attrs([Attr("address","0x85C"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(630, "%00000276"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("#1",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(635, "%0000027b"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("#2",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(641, "%00000281"), Attrs([Attr("address","0x860"), +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(647, "%00000287"), Attrs([Attr("address","0x860"), +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(651, "%0000028b"), Attrs([Attr("address","0x860"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#2",Imm(64)),Int(1,64)),Int(0,64))), Def(Tid(655, "%0000028f"), + Attrs([Attr("address","0x860"), Attr("insn","cmp x1, x0")]), + Var("NF",Imm(1)), Extract(63,63,PLUS(Var("#2",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(661, "%00000295"), Attrs([Attr("address","0x864"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(659, "%00000293"))), Goto(Tid(2_112, "%00000840"), Attrs([]), + Int(1,1), Direct(Tid(1_185, "%000004a1")))])), Blk(Tid(1_185, "%000004a1"), + Attrs([Attr("address","0x868")]), Phis([]), +Defs([Def(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x868"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_195, "%000004ab"), Attrs([Attr("address","0x86C"), +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_200, "%000004b0"), Attrs([Attr("address","0x870"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(659, "%00000293"))), Goto(Tid(2_113, "%00000841"), Attrs([]), + Int(1,1), Direct(Tid(1_204, "%000004b4")))])), Blk(Tid(659, "%00000293"), + Attrs([Attr("address","0x87C")]), Phis([]), Defs([]), +Jmps([Call(Tid(667, "%0000029b"), Attrs([Attr("address","0x87C"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_204, "%000004b4"), Attrs([Attr("address","0x874")]), Phis([]), +Defs([Def(Tid(1_208, "%000004b8"), Attrs([Attr("address","0x874"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_213, "%000004bd"), Attrs([Attr("address","0x878"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_062, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x910")]), "frame_dummy", Args([Arg(Tid(2_129, "%00000851"), + 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(818, "@frame_dummy"), + Attrs([Attr("address","0x910")]), Phis([]), Defs([]), +Jmps([Call(Tid(820, "%00000334"), Attrs([Attr("address","0x910"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_069, "@register_tm_clones")),))]))])), Sub(Tid(2_063, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7F0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_130, "%00000852"), + 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_043, "@free"), Attrs([Attr("address","0x7F0")]), + Phis([]), Defs([Def(Tid(1_671, "%00000687"), Attrs([Attr("address","0x7F0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_678, "%0000068e"), Attrs([Attr("address","0x7F4"), +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_684, "%00000694"), Attrs([Attr("address","0x7F8"), +Attr("insn","add x16, x16, #0x48")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(72,64)))]), Jmps([Call(Tid(1_689, "%00000699"), + Attrs([Attr("address","0x7FC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_064, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x914")]), "main", Args([Arg(Tid(2_131, "%00000853"), + 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_132, "%00000854"), + 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_133, "%00000855"), + 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(822, "@main"), + Attrs([Attr("address","0x914")]), Phis([]), Defs([Def(Tid(826, "%0000033a"), + Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#4",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(832, "%00000340"), Attrs([Attr("address","0x914"), +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(838, "%00000346"), Attrs([Attr("address","0x914"), +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(842, "%0000034a"), Attrs([Attr("address","0x914"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#4",Imm(64))), Def(Tid(850, "%00000352"), + Attrs([Attr("address","0x918"), Attr("insn","str x21, [sp, #0x10]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),Var("R21",Imm(64)),LittleEndian(),64)), +Def(Tid(856, "%00000358"), Attrs([Attr("address","0x91C"), +Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("#5",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(862, "%0000035e"), + Attrs([Attr("address","0x91C"), Attr("insn","stp x20, x19, [sp, #0x20]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#5",Imm(64)),Var("R20",Imm(64)),LittleEndian(),64)), +Def(Tid(868, "%00000364"), Attrs([Attr("address","0x91C"), +Attr("insn","stp x20, x19, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#5",Imm(64)),Int(8,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(874, "%0000036a"), Attrs([Attr("address","0x920"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(879, "%0000036f"), Attrs([Attr("address","0x924"), +Attr("insn","mov w0, #0xb")]), Var("R0",Imm(64)), Int(11,64)), +Def(Tid(884, "%00000374"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x188")]), Var("R30",Imm(64)), Int(2348,64))]), +Jmps([Call(Tid(887, "%00000377"), Attrs([Attr("address","0x928"), +Attr("insn","bl #-0x188")]), Int(1,1), +(Direct(Tid(2_065, "@malloc")),Direct(Tid(889, "%00000379"))))])), +Blk(Tid(889, "%00000379"), Attrs([Attr("address","0x92C")]), Phis([]), +Defs([Def(Tid(892, "%0000037c"), Attrs([Attr("address","0x92C"), +Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), +Def(Tid(897, "%00000381"), Attrs([Attr("address","0x930"), +Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), +Def(Tid(903, "%00000387"), Attrs([Attr("address","0x934"), +Attr("insn","add x20, x20, #0x61")]), Var("R20",Imm(64)), +PLUS(Var("R20",Imm(64)),Int(97,64))), Def(Tid(909, "%0000038d"), + Attrs([Attr("address","0x938"), Attr("insn","mov x19, x0")]), + Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(917, "%00000395"), + Attrs([Attr("address","0x93C"), Attr("insn","str x0, [x21, #0x78]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),Var("R0",Imm(64)),LittleEndian(),64)), +Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x940"), +Attr("insn","mov x0, x20")]), Var("R0",Imm(64)), Var("R20",Imm(64))), +Def(Tid(928, "%000003a0"), Attrs([Attr("address","0x944"), +Attr("insn","bl #-0x1d4")]), Var("R30",Imm(64)), Int(2376,64))]), +Jmps([Call(Tid(931, "%000003a3"), Attrs([Attr("address","0x944"), +Attr("insn","bl #-0x1d4")]), Int(1,1), +(Direct(Tid(2_072, "@strlen")),Direct(Tid(933, "%000003a5"))))])), +Blk(Tid(933, "%000003a5"), Attrs([Attr("address","0x948")]), Phis([]), +Defs([Def(Tid(937, "%000003a9"), Attrs([Attr("address","0x948"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(943, "%000003af"), Attrs([Attr("address","0x94C"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(949, "%000003b5"), Attrs([Attr("address","0x950"), +Attr("insn","mov x1, x20")]), Var("R1",Imm(64)), Var("R20",Imm(64))), +Def(Tid(954, "%000003ba"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x1f4")]), Var("R30",Imm(64)), Int(2392,64))]), +Jmps([Call(Tid(957, "%000003bd"), Attrs([Attr("address","0x954"), +Attr("insn","bl #-0x1f4")]), Int(1,1), +(Direct(Tid(2_066, "@memcpy")),Direct(Tid(959, "%000003bf"))))])), +Blk(Tid(959, "%000003bf"), Attrs([Attr("address","0x958")]), Phis([]), +Defs([Def(Tid(963, "%000003c3"), Attrs([Attr("address","0x958"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(968, "%000003c8"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2400,64))]), +Jmps([Call(Tid(971, "%000003cb"), Attrs([Attr("address","0x95C"), +Attr("insn","bl #-0x17c")]), Int(1,1), +(Direct(Tid(2_068, "@puts")),Direct(Tid(973, "%000003cd"))))])), +Blk(Tid(973, "%000003cd"), Attrs([Attr("address","0x960")]), Phis([]), +Defs([Def(Tid(978, "%000003d2"), Attrs([Attr("address","0x960"), +Attr("insn","ldr x8, [x21, #0x78]")]), Var("R8",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(985, "%000003d9"), Attrs([Attr("address","0x964"), +Attr("insn","strb wzr, [x8, #0x4]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R8",Imm(64)),Int(4,64)),Int(0,8),LittleEndian(),8)), +Def(Tid(992, "%000003e0"), Attrs([Attr("address","0x968"), +Attr("insn","ldr x19, [x21, #0x78]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(998, "%000003e6"), Attrs([Attr("address","0x96C"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x200")]), Var("R30",Imm(64)), Int(2420,64))]), +Jmps([Call(Tid(1_005, "%000003ed"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0x200")]), Int(1,1), +(Direct(Tid(2_072, "@strlen")),Direct(Tid(1_007, "%000003ef"))))])), +Blk(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_011, "%000003f3"), Attrs([Attr("address","0x974"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(1_017, "%000003f9"), Attrs([Attr("address","0x978"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(1_022, "%000003fe"), Attrs([Attr("address","0x97C"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(1_027, "%00000403"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x1d0")]), Var("R30",Imm(64)), Int(2436,64))]), +Jmps([Call(Tid(1_030, "%00000406"), Attrs([Attr("address","0x980"), +Attr("insn","bl #-0x1d0")]), Int(1,1), +(Direct(Tid(2_067, "@memset")),Direct(Tid(1_032, "%00000408"))))])), +Blk(Tid(1_032, "%00000408"), Attrs([Attr("address","0x984")]), Phis([]), +Defs([Def(Tid(1_037, "%0000040d"), Attrs([Attr("address","0x984"), +Attr("insn","ldr x0, [x21, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R21",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(1_042, "%00000412"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x198")]), Var("R30",Imm(64)), Int(2444,64))]), +Jmps([Call(Tid(1_045, "%00000415"), Attrs([Attr("address","0x988"), +Attr("insn","bl #-0x198")]), Int(1,1), +(Direct(Tid(2_063, "@free")),Direct(Tid(1_047, "%00000417"))))])), +Blk(Tid(1_047, "%00000417"), Attrs([Attr("address","0x98C")]), Phis([]), +Defs([Def(Tid(1_050, "%0000041a"), Attrs([Attr("address","0x98C"), +Attr("insn","mov w0, wzr")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(1_056, "%00000420"), Attrs([Attr("address","0x990"), +Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("#6",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64))), Def(Tid(1_061, "%00000425"), + Attrs([Attr("address","0x990"), Attr("insn","ldp x20, x19, [sp, #0x20]")]), + Var("R20",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#6",Imm(64)),LittleEndian(),64)), +Def(Tid(1_066, "%0000042a"), Attrs([Attr("address","0x990"), +Attr("insn","ldp x20, x19, [sp, #0x20]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("#6",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(1_073, "%00000431"), Attrs([Attr("address","0x994"), +Attr("insn","ldr x21, [sp, #0x10]")]), Var("R21",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(16,64)),LittleEndian(),64)), +Def(Tid(1_080, "%00000438"), Attrs([Attr("address","0x998"), +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_085, "%0000043d"), Attrs([Attr("address","0x998"), +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_089, "%00000441"), Attrs([Attr("address","0x998"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(1_094, "%00000446"), + Attrs([Attr("address","0x99C"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_065, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x7A0"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_134, "%00000856"), 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_135, "%00000857"), + 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(885, "@malloc"), Attrs([Attr("address","0x7A0")]), Phis([]), +Defs([Def(Tid(1_561, "%00000619"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_568, "%00000620"), Attrs([Attr("address","0x7A4"), +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_574, "%00000626"), Attrs([Attr("address","0x7A8"), +Attr("insn","add x16, x16, #0x20")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_579, "%0000062b"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_066, "@memcpy"), + Attrs([Attr("c.proto","void* (*)(void restrict * dst, void restrict * src, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memcpy", + Args([Arg(Tid(2_136, "%00000858"), 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_137, "%00000859"), + 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_138, "%0000085a"), 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_139, "%0000085b"), 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(955, "@memcpy"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_473, "%000005c1"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_480, "%000005c8"), Attrs([Attr("address","0x764"), +Attr("insn","ldr x17, [x16]")]), Var("R17",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R16",Imm(64)),LittleEndian(),64)), +Def(Tid(1_486, "%000005ce"), Attrs([Attr("address","0x768"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_491, "%000005d3"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_067, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x7B0"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_140, "%0000085c"), 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_141, "%0000085d"), + 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_142, "%0000085e"), + 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_143, "%0000085f"), 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_028, "@memset"), Attrs([Attr("address","0x7B0")]), Phis([]), +Defs([Def(Tid(1_583, "%0000062f"), Attrs([Attr("address","0x7B0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_590, "%00000636"), Attrs([Attr("address","0x7B4"), +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_596, "%0000063c"), Attrs([Attr("address","0x7B8"), +Attr("insn","add x16, x16, #0x28")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(40,64)))]), Jmps([Call(Tid(1_601, "%00000641"), + Attrs([Attr("address","0x7BC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_068, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x7E0"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_144, "%00000860"), 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_145, "%00000861"), 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(969, "@puts"), Attrs([Attr("address","0x7E0")]), Phis([]), +Defs([Def(Tid(1_649, "%00000671"), Attrs([Attr("address","0x7E0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_656, "%00000678"), Attrs([Attr("address","0x7E4"), +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_662, "%0000067e"), Attrs([Attr("address","0x7E8"), +Attr("insn","add x16, x16, #0x40")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(64,64)))]), Jmps([Call(Tid(1_667, "%00000683"), + Attrs([Attr("address","0x7EC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_069, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880")]), + "register_tm_clones", Args([Arg(Tid(2_146, "%00000862"), + 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(669, "@register_tm_clones"), Attrs([Attr("address","0x880")]), + Phis([]), Defs([Def(Tid(672, "%000002a0"), Attrs([Attr("address","0x880"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(678, "%000002a6"), Attrs([Attr("address","0x884"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(683, "%000002ab"), + Attrs([Attr("address","0x888"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(689, "%000002b1"), + Attrs([Attr("address","0x88C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(696, "%000002b8"), Attrs([Attr("address","0x890"), +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(702, "%000002be"), Attrs([Attr("address","0x894"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x898"), +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(715, "%000002cb"), Attrs([Attr("address","0x89C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(721, "%000002d1"), Attrs([Attr("address","0x8A0"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(719, "%000002cf"))), Goto(Tid(2_114, "%00000842"), Attrs([]), + Int(1,1), Direct(Tid(1_155, "%00000483")))])), Blk(Tid(1_155, "%00000483"), + Attrs([Attr("address","0x8A4")]), Phis([]), +Defs([Def(Tid(1_158, "%00000486"), Attrs([Attr("address","0x8A4"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_165, "%0000048d"), Attrs([Attr("address","0x8A8"), +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_170, "%00000492"), Attrs([Attr("address","0x8AC"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(719, "%000002cf"))), Goto(Tid(2_115, "%00000843"), Attrs([]), + Int(1,1), Direct(Tid(1_174, "%00000496")))])), Blk(Tid(719, "%000002cf"), + Attrs([Attr("address","0x8B8")]), Phis([]), Defs([]), +Jmps([Call(Tid(727, "%000002d7"), Attrs([Attr("address","0x8B8"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_174, "%00000496"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(1_178, "%0000049a"), Attrs([Attr("address","0x8B0"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_183, "%0000049f"), Attrs([Attr("address","0x8B4"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_072, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x770"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_147, "%00000863"), 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_148, "%00000864"), + 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(929, "@strlen"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_495, "%000005d7"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_502, "%000005de"), Attrs([Attr("address","0x774"), +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_508, "%000005e4"), Attrs([Attr("address","0x778"), +Attr("insn","add x16, x16, #0x8")]), Var("R16",Imm(64)), +PLUS(Var("R16",Imm(64)),Int(8,64)))]), Jmps([Call(Tid(1_513, "%000005e9"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))]))]))) \ No newline at end of file diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..e9292acea --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,350 @@ +00000844: program +000007fd: sub __cxa_finalize(__cxa_finalize_result) +00000845: __cxa_finalize_result :: out u32 = low:32[R0] + +0000047f: +00000603: R16 := 0x20000 +0000060a: R17 := mem[R16 + 0x18, el]:u64 +00000610: R16 := R16 + 0x18 +00000615: call R17 with noreturn + +000007fe: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000846: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +000002db: +000002df: #3 := R31 - 0x20 +000002e5: mem := mem with [#3, el]:u64 <- R29 +000002eb: mem := mem with [#3 + 8, el]:u64 <- R30 +000002ef: R31 := #3 +000002f5: R29 := R31 +000002fd: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000302: R19 := 0x20000 +00000309: R0 := pad:64[mem[R19 + 0x70]] +0000030f: when 0:0[R0] goto %0000030d +0000083a: goto %00000448 + +00000448: +0000044b: R0 := 0x1F000 +00000452: R0 := mem[R0 + 0xFC8, el]:u64 +00000458: when R0 = 0 goto %00000456 +0000083b: goto %0000046f + +0000046f: +00000472: R0 := 0x20000 +00000479: R0 := mem[R0 + 0x58, el]:u64 +0000047e: R30 := 0x8F0 +00000481: call @__cxa_finalize with return %00000456 + +00000456: +0000045e: R30 := 0x8F4 +00000460: call @deregister_tm_clones with return %00000462 + +00000462: +00000465: R0 := 1 +0000046d: mem := mem with [R19 + 0x70] <- 7:0[R0] +0000083c: goto %0000030d + +0000030d: +00000317: R19 := mem[R31 + 0x10, el]:u64 +0000031e: R29 := mem[R31, el]:u64 +00000323: R30 := mem[R31 + 8, el]:u64 +00000327: R31 := R31 + 0x20 +0000032c: call R30 with noreturn + +00000802: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000847: __libc_start_main_main :: in u64 = R0 +00000848: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000849: __libc_start_main_arg3 :: in out u64 = R2 +0000084a: __libc_start_main_auxv :: in out u64 = R3 +0000084b: __libc_start_main_result :: out u32 = low:32[R0] + +00000234: +000005ed: R16 := 0x20000 +000005f4: R17 := mem[R16 + 0x10, el]:u64 +000005fa: R16 := R16 + 0x10 +000005ff: call R17 with noreturn + +00000803: sub _fini(_fini_result) +0000084c: _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 + +00000804: sub _init(_init_result) +0000084d: _init_result :: out u32 = low:32[R0] + +00000724: +0000072a: #8 := R31 - 0x10 +00000730: mem := mem with [#8, el]:u64 <- R29 +00000736: mem := mem with [#8 + 8, el]:u64 <- R30 +0000073a: R31 := #8 +00000740: R29 := R31 +00000745: R30 := 0x738 +00000747: call @call_weak_fn with return %00000749 + +00000749: +0000074e: R29 := mem[R31, el]:u64 +00000753: R30 := mem[R31 + 8, el]:u64 +00000757: R31 := R31 + 0x10 +0000075c: call R30 with noreturn + +00000805: sub _start(_start_result) +0000084e: _start_result :: out u32 = low:32[R0] + +000001f5: +000001fa: R29 := 0 +000001ff: R30 := 0 +00000205: R5 := R0 +0000020c: R1 := mem[R31, el]:u64 +00000212: R2 := R31 + 8 +00000218: R6 := R31 +0000021d: R0 := 0x1F000 +00000224: R0 := mem[R0 + 0xFD8, el]:u64 +00000229: R3 := 0 +0000022e: R4 := 0 +00000233: R30 := 0x830 +00000236: call @__libc_start_main with return %00000238 + +00000238: +0000023b: R30 := 0x834 +0000023e: call @abort with return %0000083d + +0000083d: +0000083e: call @call_weak_fn with noreturn + +00000808: sub abort() + + +0000023c: +0000065b: R16 := 0x20000 +00000662: R17 := mem[R16 + 0x38, el]:u64 +00000668: R16 := R16 + 0x38 +0000066d: call R17 with noreturn + +00000809: sub call_weak_fn(call_weak_fn_result) +0000084f: call_weak_fn_result :: out u32 = low:32[R0] + +00000240: +00000243: R0 := 0x1F000 +0000024a: R0 := mem[R0 + 0xFD0, el]:u64 +00000250: when R0 = 0 goto %0000024e +0000083f: goto %000004bf + +0000024e: +00000256: call R30 with noreturn + +000004bf: +000004c2: goto @__gmon_start__ + +000004c0: +00000645: R16 := 0x20000 +0000064c: R17 := mem[R16 + 0x30, el]:u64 +00000652: R16 := R16 + 0x30 +00000657: call R17 with noreturn + +0000080b: sub deregister_tm_clones(deregister_tm_clones_result) +00000850: deregister_tm_clones_result :: out u32 = low:32[R0] + +0000025c: +0000025f: R0 := 0x20000 +00000265: R0 := R0 + 0x70 +0000026a: R1 := 0x20000 +00000270: R1 := R1 + 0x70 +00000276: #1 := ~R0 +0000027b: #2 := R1 + ~R0 +00000281: VF := extend:65[#2 + 1] <> extend:65[R1] + extend:65[#1] + 1 +00000287: CF := pad:65[#2 + 1] <> pad:65[R1] + pad:65[#1] + 1 +0000028b: ZF := #2 + 1 = 0 +0000028f: NF := 63:63[#2 + 1] +00000295: when ZF goto %00000293 +00000840: goto %000004a1 + +000004a1: +000004a4: R1 := 0x1F000 +000004ab: R1 := mem[R1 + 0xFC0, el]:u64 +000004b0: when R1 = 0 goto %00000293 +00000841: goto %000004b4 + +00000293: +0000029b: call R30 with noreturn + +000004b4: +000004b8: R16 := R1 +000004bd: call R16 with noreturn + +0000080e: sub frame_dummy(frame_dummy_result) +00000851: frame_dummy_result :: out u32 = low:32[R0] + +00000332: +00000334: call @register_tm_clones with noreturn + +0000080f: sub free(free_ptr) +00000852: free_ptr :: in out u64 = R0 + +00000413: +00000687: R16 := 0x20000 +0000068e: R17 := mem[R16 + 0x48, el]:u64 +00000694: R16 := R16 + 0x48 +00000699: call R17 with noreturn + +00000810: sub main(main_argc, main_argv, main_result) +00000853: main_argc :: in u32 = low:32[R0] +00000854: main_argv :: in out u64 = R1 +00000855: main_result :: out u32 = low:32[R0] + +00000336: +0000033a: #4 := R31 - 0x30 +00000340: mem := mem with [#4, el]:u64 <- R29 +00000346: mem := mem with [#4 + 8, el]:u64 <- R30 +0000034a: R31 := #4 +00000352: mem := mem with [R31 + 0x10, el]:u64 <- R21 +00000358: #5 := R31 + 0x20 +0000035e: mem := mem with [#5, el]:u64 <- R20 +00000364: mem := mem with [#5 + 8, el]:u64 <- R19 +0000036a: R29 := R31 +0000036f: R0 := 0xB +00000374: R30 := 0x92C +00000377: call @malloc with return %00000379 + +00000379: +0000037c: R21 := 0x20000 +00000381: R20 := 0x20000 +00000387: R20 := R20 + 0x61 +0000038d: R19 := R0 +00000395: mem := mem with [R21 + 0x78, el]:u64 <- R0 +0000039b: R0 := R20 +000003a0: R30 := 0x948 +000003a3: call @strlen with return %000003a5 + +000003a5: +000003a9: R2 := R0 +000003af: R0 := R19 +000003b5: R1 := R20 +000003ba: R30 := 0x958 +000003bd: call @memcpy with return %000003bf + +000003bf: +000003c3: R0 := R19 +000003c8: R30 := 0x960 +000003cb: call @puts with return %000003cd + +000003cd: +000003d2: R8 := mem[R21 + 0x78, el]:u64 +000003d9: mem := mem with [R8 + 4] <- 0 +000003e0: R19 := mem[R21 + 0x78, el]:u64 +000003e6: R0 := R19 +000003eb: R30 := 0x974 +000003ed: call @strlen with return %000003ef + +000003ef: +000003f3: R2 := R0 +000003f9: R0 := R19 +000003fe: R1 := 1 +00000403: R30 := 0x984 +00000406: call @memset with return %00000408 + +00000408: +0000040d: R0 := mem[R21 + 0x78, el]:u64 +00000412: R30 := 0x98C +00000415: call @free with return %00000417 + +00000417: +0000041a: R0 := 0 +00000420: #6 := R31 + 0x20 +00000425: R20 := mem[#6, el]:u64 +0000042a: R19 := mem[#6 + 8, el]:u64 +00000431: R21 := mem[R31 + 0x10, el]:u64 +00000438: R29 := mem[R31, el]:u64 +0000043d: R30 := mem[R31 + 8, el]:u64 +00000441: R31 := R31 + 0x30 +00000446: call R30 with noreturn + +00000811: sub malloc(malloc_size, malloc_result) +00000856: malloc_size :: in u64 = R0 +00000857: malloc_result :: out u64 = R0 + +00000375: +00000619: R16 := 0x20000 +00000620: R17 := mem[R16 + 0x20, el]:u64 +00000626: R16 := R16 + 0x20 +0000062b: call R17 with noreturn + +00000812: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000858: memcpy_dst :: in out u64 = R0 +00000859: memcpy_src :: in out u64 = R1 +0000085a: memcpy_n :: in u64 = R2 +0000085b: memcpy_result :: out u64 = R0 + +000003bb: +000005c1: R16 := 0x20000 +000005c8: R17 := mem[R16, el]:u64 +000005ce: R16 := R16 +000005d3: call R17 with noreturn + +00000813: sub memset(memset_buf, memset_c, memset_n, memset_result) +0000085c: memset_buf :: in out u64 = R0 +0000085d: memset_c :: in u32 = low:32[R1] +0000085e: memset_n :: in u64 = R2 +0000085f: memset_result :: out u64 = R0 + +00000404: +0000062f: R16 := 0x20000 +00000636: R17 := mem[R16 + 0x28, el]:u64 +0000063c: R16 := R16 + 0x28 +00000641: call R17 with noreturn + +00000814: sub puts(puts_s, puts_result) +00000860: puts_s :: in u64 = R0 +00000861: puts_result :: out u32 = low:32[R0] + +000003c9: +00000671: R16 := 0x20000 +00000678: R17 := mem[R16 + 0x40, el]:u64 +0000067e: R16 := R16 + 0x40 +00000683: call R17 with noreturn + +00000815: sub register_tm_clones(register_tm_clones_result) +00000862: register_tm_clones_result :: out u32 = low:32[R0] + +0000029d: +000002a0: R0 := 0x20000 +000002a6: R0 := R0 + 0x70 +000002ab: R1 := 0x20000 +000002b1: R1 := R1 + 0x70 +000002b8: R1 := R1 + ~R0 + 1 +000002be: R2 := 0.63:63[R1] +000002c5: R1 := R2 + (R1 ~>> 3) +000002cb: R1 := extend:64[63:1[R1]] +000002d1: when R1 = 0 goto %000002cf +00000842: goto %00000483 + +00000483: +00000486: R2 := 0x1F000 +0000048d: R2 := mem[R2 + 0xFE0, el]:u64 +00000492: when R2 = 0 goto %000002cf +00000843: goto %00000496 + +000002cf: +000002d7: call R30 with noreturn + +00000496: +0000049a: R16 := R2 +0000049f: call R16 with noreturn + +00000818: sub strlen(strlen_s, strlen_result) +00000863: strlen_s :: in u64 = R0 +00000864: strlen_result :: out u64 = R0 + +000003a1: +000005d7: R16 := 0x20000 +000005de: R17 := mem[R16 + 8, el]:u64 +000005e4: R16 := R16 + 8 +000005e9: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..8296ed8eb --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,828 @@ +var {:extern} Gamma_R0: bool; +var {:extern} Gamma_R1: bool; +var {:extern} Gamma_R16: bool; +var {:extern} Gamma_R17: bool; +var {:extern} Gamma_R19: bool; +var {:extern} Gamma_R2: bool; +var {:extern} Gamma_R20: bool; +var {:extern} Gamma_R21: bool; +var {:extern} Gamma_R29: bool; +var {:extern} Gamma_R30: bool; +var {:extern} Gamma_R31: bool; +var {:extern} Gamma_R8: bool; +var {:extern} Gamma_malloc_base: [bv64]bool; +var {:extern} Gamma_malloc_count: [bv64]bool; +var {:extern} Gamma_malloc_end: [bv64]bool; +var {:extern} Gamma_mem: [bv64]bool; +var {:extern} Gamma_stack: [bv64]bool; +var {:extern} R0: bv64; +var {:extern} R1: bv64; +var {:extern} R16: bv64; +var {:extern} R17: bv64; +var {:extern} R19: bv64; +var {:extern} R2: bv64; +var {:extern} R20: bv64; +var {:extern} R21: bv64; +var {:extern} R29: bv64; +var {:extern} R30: bv64; +var {:extern} R31: bv64; +var {:extern} R8: bv64; +var {:extern} malloc_base: [bv64]bv8; +var {:extern} malloc_count: [bv64]bv8; +var {:extern} malloc_end: [bv64]bv8; +var {:extern} mem: [bv64]bv8; +var {:extern} stack: [bv64]bv8; +const {:extern} $buf_addr: bv64; +axiom ($buf_addr == 131192bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131168bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131169bv64); +function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { + false +} + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); +function {:extern} gamma_load32(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) +} + +function {:extern} gamma_load64(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 7bv64)] && (gammaMap[bvadd64(index, 6bv64)] && (gammaMap[bvadd64(index, 5bv64)] && (gammaMap[bvadd64(index, 4bv64)] && (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))))))) +} + +function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { + gammaMap[index] +} + +function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + gammaMap[index := value][bvadd64(index, 1bv64) := value][bvadd64(index, 2bv64) := value][bvadd64(index, 3bv64) := value][bvadd64(index, 4bv64) := value][bvadd64(index, 5bv64) := value][bvadd64(index, 6bv64) := value][bvadd64(index, 7bv64) := value] +} + +function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + gammaMap[index := value] +} + +function {:extern} memory_load64_le(memory: [bv64]bv8, index: bv64) returns (bv64) { + (memory[bvadd64(index, 7bv64)] ++ (memory[bvadd64(index, 6bv64)] ++ (memory[bvadd64(index, 5bv64)] ++ (memory[bvadd64(index, 4bv64)] ++ (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))))))) +} + +function {:extern} memory_load8_le(memory: [bv64]bv8, index: bv64) returns (bv8) { + memory[index] +} + +function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { + memory[index := value[8:0]][bvadd64(index, 1bv64) := value[16:8]][bvadd64(index, 2bv64) := value[24:16]][bvadd64(index, 3bv64) := value[32:24]][bvadd64(index, 4bv64) := value[40:32]][bvadd64(index, 5bv64) := value[48:40]][bvadd64(index, 6bv64) := value[56:48]][bvadd64(index, 7bv64) := value[64:56]] +} + +function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { + memory[index := value[8:0]] +} + +procedure {:extern} rely(); + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); + free ensures (memory_load8_le(mem, 2484bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2485bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2486bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2487bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure {:extern} rely_transitive() + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); +{ + call rely(); + call rely(); +} + +procedure {:extern} rely_reflexive(); + +procedure {:extern} guarantee_reflexive(); + modifies Gamma_mem, mem; + +procedure #free(); + modifies Gamma_R16, Gamma_R17, R16, R17; + requires (forall i : int, j: bv64 :: (malloc_base[i] == R0 && bvuge64(j, R0) && bvult64(j, malloc_end[i])) ==> Gamma_mem[j]); + free requires (memory_load8_le(mem, 2484bv64) == 1bv8); + free requires (memory_load8_le(mem, 2485bv64) == 0bv8); + free requires (memory_load8_le(mem, 2486bv64) == 2bv8); + free requires (memory_load8_le(mem, 2487bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2484bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2485bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2486bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2487bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure main() + modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, Gamma_R20, Gamma_R21, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_R8, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, R20, R21, R29, R30, R31, R8, malloc_base, malloc_count, malloc_end, mem, stack; + requires (gamma_load8(Gamma_mem, $password_addr) == false); + requires malloc_count == 0; + requires gamma_load32(Gamma_mem, memory_load64_le(mem, $stext_addr)); + requires R31 == 100bv64; + free requires (memory_load8_le(mem, 131152bv64) == 0bv8); + free requires (memory_load8_le(mem, 131153bv64) == 0bv8); + free requires (memory_load8_le(mem, 131154bv64) == 0bv8); + free requires (memory_load8_le(mem, 131155bv64) == 0bv8); + free requires (memory_load8_le(mem, 131156bv64) == 0bv8); + free requires (memory_load8_le(mem, 131157bv64) == 0bv8); + free requires (memory_load8_le(mem, 131158bv64) == 0bv8); + free requires (memory_load8_le(mem, 131159bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free requires (memory_load8_le(mem, 131168bv64) == 7bv8); + free requires (memory_load8_le(mem, 131169bv64) == 117bv8); + free requires (memory_load8_le(mem, 131170bv64) == 115bv8); + free requires (memory_load8_le(mem, 131171bv64) == 101bv8); + free requires (memory_load8_le(mem, 131172bv64) == 114bv8); + free requires (memory_load8_le(mem, 131173bv64) == 58bv8); + free requires (memory_load8_le(mem, 131174bv64) == 112bv8); + free requires (memory_load8_le(mem, 131175bv64) == 97bv8); + free requires (memory_load8_le(mem, 131176bv64) == 115bv8); + free requires (memory_load8_le(mem, 131177bv64) == 115bv8); + free requires (memory_load8_le(mem, 131178bv64) == 0bv8); + free requires (memory_load8_le(mem, 131179bv64) == 0bv8); + free requires (memory_load8_le(mem, 2484bv64) == 1bv8); + free requires (memory_load8_le(mem, 2485bv64) == 0bv8); + free requires (memory_load8_le(mem, 2486bv64) == 2bv8); + free requires (memory_load8_le(mem, 2487bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (Gamma_R19 == old(Gamma_R19)); + free ensures (Gamma_R20 == old(Gamma_R20)); + free ensures (Gamma_R21 == old(Gamma_R21)); + free ensures (Gamma_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R19 == old(R19)); + free ensures (R20 == old(R20)); + free ensures (R21 == old(R21)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2484bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2485bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2486bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2487bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); +{ + var #4: bv64; + var #5: bv64; + var #6: bv64; + var Gamma_#4: bool; + var Gamma_#5: bool; + var Gamma_#6: bool; + lmain: + assume {:captureState "lmain"} true; + #4, Gamma_#4 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #4, R29), gamma_store64(Gamma_stack, #4, Gamma_R29); + assume {:captureState "%00000340"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#4, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#4, 8bv64), Gamma_R30); + assume {:captureState "%00000346"} true; + R31, Gamma_R31 := #4, Gamma_#4; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 16bv64), R21), gamma_store64(Gamma_stack, bvadd64(R31, 16bv64), Gamma_R21); + assume {:captureState "%00000352"} true; + #5, Gamma_#5 := bvadd64(R31, 32bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #5, R20), gamma_store64(Gamma_stack, #5, Gamma_R20); + assume {:captureState "%0000035e"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#5, 8bv64), R19), gamma_store64(Gamma_stack, bvadd64(#5, 8bv64), Gamma_R19); + assume {:captureState "%00000364"} true; + R29, Gamma_R29 := R31, Gamma_R31; + R0, Gamma_R0 := 11bv64, true; + R30, Gamma_R30 := 2348bv64, true; + call malloc(); + goto l00000379; + l00000379: + assume {:captureState "l00000379"} true; + R21, Gamma_R21 := 131072bv64, true; + R20, Gamma_R20 := 131072bv64, true; + R20, Gamma_R20 := bvadd64(R20, 97bv64), Gamma_R20; + R19, Gamma_R19 := R0, Gamma_R0; + call rely(); + assert (L(mem, bvadd64(R21, 120bv64)) ==> Gamma_R0); + mem, Gamma_mem := memory_store64_le(mem, bvadd64(R21, 120bv64), R0), gamma_store64(Gamma_mem, bvadd64(R21, 120bv64), Gamma_R0); + assume {:captureState "%00000395"} true; + R0, Gamma_R0 := R20, Gamma_R20; + R30, Gamma_R30 := 2376bv64, true; + call strlen(); + goto l000003a5; + l000003a5: + assume {:captureState "l000003a5"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R1, Gamma_R1 := R20, Gamma_R20; + R30, Gamma_R30 := 2392bv64, true; + call memcpy(); + goto l000003bf; + l000003bf: + assume {:captureState "l000003bf"} true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2400bv64, true; + call puts(); + goto l000003cd; + l000003cd: + assume {:captureState "l000003cd"} true; + call rely(); + R8, Gamma_R8 := memory_load64_le(mem, bvadd64(R21, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R21, 120bv64)) || L(mem, bvadd64(R21, 120bv64))); + call rely(); + assert (L(mem, bvadd64(R8, 4bv64)) ==> true); + mem, Gamma_mem := memory_store8_le(mem, bvadd64(R8, 4bv64), 0bv8), gamma_store8(Gamma_mem, bvadd64(R8, 4bv64), true); + assume {:captureState "%000003d9"} true; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, bvadd64(R21, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R21, 120bv64)) || L(mem, bvadd64(R21, 120bv64))); + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2420bv64, true; + call strlen(); + goto l000003ef; + l000003ef: + assume {:captureState "l000003ef"} true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R1, Gamma_R1 := 1bv64, true; + R30, Gamma_R30 := 2436bv64, true; + call memset(); + goto l00000408; + l00000408: + assume {:captureState "l00000408"} true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R21, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R21, 120bv64)) || L(mem, bvadd64(R21, 120bv64))); + R30, Gamma_R30 := 2444bv64, true; + call #free(); + goto l00000417; + l00000417: + assume {:captureState "l00000417"} true; + R0, Gamma_R0 := 0bv64, true; + #6, Gamma_#6 := bvadd64(R31, 32bv64), Gamma_R31; + R20, Gamma_R20 := memory_load64_le(stack, #6), gamma_load64(Gamma_stack, #6); + R19, Gamma_R19 := memory_load64_le(stack, bvadd64(#6, 8bv64)), gamma_load64(Gamma_stack, bvadd64(#6, 8bv64)); + R21, Gamma_R21 := memory_load64_le(stack, bvadd64(R31, 16bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 16bv64)); + R29, Gamma_R29 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); + R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); + R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; + return; +} + +procedure malloc(); + modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, R0, R16, R17, malloc_base, malloc_count, malloc_end; + requires bvugt64(R0, 0bv64); + requires Gamma_R0 == true; + free requires (memory_load8_le(mem, 2484bv64) == 1bv8); + free requires (memory_load8_le(mem, 2485bv64) == 0bv8); + free requires (memory_load8_le(mem, 2486bv64) == 2bv8); + free requires (memory_load8_le(mem, 2487bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures ((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)))); + ensures Gamma_R0 == true; + ensures malloc_count == old(malloc_count) + 1; + ensures bvugt64(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); + ensures (forall i : bv64 :: (bvuge64(i, R0) && bvult64(i, bvadd64(R0, old(R0)))) ==> (Gamma_mem[i] && gamma_load8(Gamma_mem, i))); + free ensures (memory_load8_le(mem, 2484bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2485bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2486bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2487bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure memcpy(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + free requires (memory_load8_le(mem, 2484bv64) == 1bv8); + free requires (memory_load8_le(mem, 2485bv64) == 0bv8); + free requires (memory_load8_le(mem, 2486bv64) == 2bv8); + free requires (memory_load8_le(mem, 2487bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures ((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)))); + ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i, bvadd64(R0, R2))) then gamma_load8((Gamma_mem), bvadd64(bvsub64(i, R0), R1)) else old(gamma_load8(Gamma_mem, i)))); + ensures (forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le((mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i)))); + free ensures (memory_load8_le(mem, 2484bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2485bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2486bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2487bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure memset(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + requires Gamma_R1; + free requires (memory_load8_le(mem, 2484bv64) == 1bv8); + free requires (memory_load8_le(mem, 2485bv64) == 0bv8); + free requires (memory_load8_le(mem, 2486bv64) == 2bv8); + free requires (memory_load8_le(mem, 2487bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures ((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)))); + ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then Gamma_R1 else old(gamma_load8(Gamma_mem, i)))); + 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)))); + free ensures (memory_load8_le(mem, 2484bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2485bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2486bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2487bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure puts(); + modifies Gamma_R16, Gamma_R17, R16, R17; + free requires (memory_load8_le(mem, 2484bv64) == 1bv8); + free requires (memory_load8_le(mem, 2485bv64) == 0bv8); + free requires (memory_load8_le(mem, 2486bv64) == 2bv8); + free requires (memory_load8_le(mem, 2487bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2484bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2485bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2486bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2487bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure strlen(); + modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; + free requires (memory_load8_le(mem, 2484bv64) == 1bv8); + free requires (memory_load8_le(mem, 2485bv64) == 0bv8); + free requires (memory_load8_le(mem, 2486bv64) == 2bv8); + free requires (memory_load8_le(mem, 2487bv64) == 0bv8); + free requires (memory_load8_le(mem, 130488bv64) == 16bv8); + free requires (memory_load8_le(mem, 130489bv64) == 9bv8); + free requires (memory_load8_le(mem, 130490bv64) == 0bv8); + free requires (memory_load8_le(mem, 130491bv64) == 0bv8); + free requires (memory_load8_le(mem, 130492bv64) == 0bv8); + free requires (memory_load8_le(mem, 130493bv64) == 0bv8); + free requires (memory_load8_le(mem, 130494bv64) == 0bv8); + free requires (memory_load8_le(mem, 130495bv64) == 0bv8); + free requires (memory_load8_le(mem, 130496bv64) == 192bv8); + free requires (memory_load8_le(mem, 130497bv64) == 8bv8); + free requires (memory_load8_le(mem, 130498bv64) == 0bv8); + free requires (memory_load8_le(mem, 130499bv64) == 0bv8); + free requires (memory_load8_le(mem, 130500bv64) == 0bv8); + free requires (memory_load8_le(mem, 130501bv64) == 0bv8); + free requires (memory_load8_le(mem, 130502bv64) == 0bv8); + free requires (memory_load8_le(mem, 130503bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 20bv8); + free requires (memory_load8_le(mem, 131033bv64) == 9bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures (((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)))) && (memory_load8_le(mem, $stext_addr) == old(memory_load8_le(mem, $stext_addr)))); + 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 (bvult64(old(R0), bvadd64(bvadd64(old(R0), R0), 1bv64))); + free ensures (memory_load8_le(mem, 2484bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2485bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2486bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2487bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130488bv64) == 16bv8); + free ensures (memory_load8_le(mem, 130489bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130490bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130491bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130492bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130493bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130494bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130495bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130496bv64) == 192bv8); + free ensures (memory_load8_le(mem, 130497bv64) == 8bv8); + free ensures (memory_load8_le(mem, 130498bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130499bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130500bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130501bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130502bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130503bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 20bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 9bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..a3d3583af --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/clang_O2/malloc_memcpy_strlen_memset_free.relf @@ -0,0 +1,145 @@ + +Relocation section '.rela.dyn' at offset 0x578 contains 8 entries: + Offset Info Type Symbol's Value Symbol's Name + Addend +000000000001fdb8 0000000000000403 R_AARCH64_RELATIVE 910 +000000000001fdc0 0000000000000403 R_AARCH64_RELATIVE 8c0 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 914 +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 0x638 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: 0000000000000728 0 SECTION LOCAL DEFAULT 12 .init + 2: 0000000000020050 0 SECTION LOCAL DEFAULT 24 .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 100 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 .hash + 5: 00000000000002e8 0 SECTION LOCAL DEFAULT 5 .gnu.hash + 6: 0000000000000308 0 SECTION LOCAL DEFAULT 6 .dynsym + 7: 0000000000000470 0 SECTION LOCAL DEFAULT 7 .dynstr + 8: 0000000000000524 0 SECTION LOCAL DEFAULT 8 .gnu.version + 9: 0000000000000548 0 SECTION LOCAL DEFAULT 9 .gnu.version_r + 10: 0000000000000578 0 SECTION LOCAL DEFAULT 10 .rela.dyn + 11: 0000000000000638 0 SECTION LOCAL DEFAULT 11 .rela.plt + 12: 0000000000000728 0 SECTION LOCAL DEFAULT 12 .init + 13: 0000000000000740 0 SECTION LOCAL DEFAULT 13 .plt + 14: 0000000000000800 0 SECTION LOCAL DEFAULT 14 .text + 15: 00000000000009a0 0 SECTION LOCAL DEFAULT 15 .fini + 16: 00000000000009b4 0 SECTION LOCAL DEFAULT 16 .rodata + 17: 00000000000009b8 0 SECTION LOCAL DEFAULT 17 .eh_frame_hdr + 18: 00000000000009f8 0 SECTION LOCAL DEFAULT 18 .eh_frame + 19: 000000000001fdb8 0 SECTION LOCAL DEFAULT 19 .init_array + 20: 000000000001fdc0 0 SECTION LOCAL DEFAULT 20 .fini_array + 21: 000000000001fdc8 0 SECTION LOCAL DEFAULT 21 .dynamic + 22: 000000000001ffb8 0 SECTION LOCAL DEFAULT 22 .got + 23: 000000000001ffe8 0 SECTION LOCAL DEFAULT 23 .got.plt + 24: 0000000000020050 0 SECTION LOCAL DEFAULT 24 .data + 25: 0000000000020070 0 SECTION LOCAL DEFAULT 25 .bss + 26: 0000000000000000 0 SECTION LOCAL DEFAULT 26 .comment + 27: 0000000000000000 0 FILE LOCAL DEFAULT ABS Scrt1.o + 28: 0000000000000278 0 NOTYPE LOCAL DEFAULT 3 $d + 29: 0000000000000278 32 OBJECT LOCAL DEFAULT 3 __abi_tag + 30: 0000000000000800 0 NOTYPE LOCAL DEFAULT 14 $x + 31: 0000000000000a0c 0 NOTYPE LOCAL DEFAULT 18 $d + 32: 00000000000009b4 0 NOTYPE LOCAL DEFAULT 16 $d + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 34: 0000000000000834 0 NOTYPE LOCAL DEFAULT 14 $x + 35: 0000000000000834 20 FUNC LOCAL DEFAULT 14 call_weak_fn + 36: 0000000000000728 0 NOTYPE LOCAL DEFAULT 12 $x + 37: 00000000000009a0 0 NOTYPE LOCAL DEFAULT 15 $x + 38: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 39: 0000000000000738 0 NOTYPE LOCAL DEFAULT 12 $x + 40: 00000000000009ac 0 NOTYPE LOCAL DEFAULT 15 $x + 41: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 42: 0000000000000850 0 NOTYPE LOCAL DEFAULT 14 $x + 43: 0000000000000850 0 FUNC LOCAL DEFAULT 14 deregister_tm_clones + 44: 0000000000000880 0 FUNC LOCAL DEFAULT 14 register_tm_clones + 45: 0000000000020058 0 NOTYPE LOCAL DEFAULT 24 $d + 46: 00000000000008c0 0 FUNC LOCAL DEFAULT 14 __do_global_dtors_aux + 47: 0000000000020070 1 OBJECT LOCAL DEFAULT 25 completed.0 + 48: 000000000001fdc0 0 NOTYPE LOCAL DEFAULT 20 $d + 49: 000000000001fdc0 0 OBJECT LOCAL DEFAULT 20 __do_global_dtors_aux_fini_array_entry + 50: 0000000000000910 0 FUNC LOCAL DEFAULT 14 frame_dummy + 51: 000000000001fdb8 0 NOTYPE LOCAL DEFAULT 19 $d + 52: 000000000001fdb8 0 OBJECT LOCAL DEFAULT 19 __frame_dummy_init_array_entry + 53: 0000000000000a20 0 NOTYPE LOCAL DEFAULT 18 $d + 54: 0000000000020070 0 NOTYPE LOCAL DEFAULT 25 $d + 55: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 56: 0000000000000914 0 NOTYPE LOCAL DEFAULT 14 $x.0 + 57: 0000000000020060 0 NOTYPE LOCAL DEFAULT 24 $d.1 + 58: 0000000000020078 0 NOTYPE LOCAL DEFAULT 25 $d.2 + 59: 000000000000001d 0 NOTYPE LOCAL DEFAULT 26 $d.3 + 60: 0000000000000a80 0 NOTYPE LOCAL DEFAULT 18 $d.4 + 61: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 62: 0000000000000ac4 0 NOTYPE LOCAL DEFAULT 18 $d + 63: 0000000000000ac4 0 OBJECT LOCAL DEFAULT 18 __FRAME_END__ + 64: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 65: 000000000001fdc8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 66: 00000000000009b8 0 NOTYPE LOCAL DEFAULT 17 __GNU_EH_FRAME_HDR + 67: 000000000001ffb8 0 OBJECT LOCAL DEFAULT ABS _GLOBAL_OFFSET_TABLE_ + 68: 0000000000000740 0 NOTYPE LOCAL DEFAULT 13 $x + 69: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memcpy@GLIBC_2.17 + 70: 0000000000000000 0 FUNC GLOBAL DEFAULT UND strlen@GLIBC_2.17 + 71: 0000000000000000 0 FUNC GLOBAL DEFAULT UND __libc_start_main@GLIBC_2.34 + 72: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_deregisterTMCloneTable + 73: 0000000000020050 0 NOTYPE WEAK DEFAULT 24 data_start + 74: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 25 __bss_start__ + 75: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 76: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 _bss_end__ + 77: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 _edata + 78: 00000000000009a0 0 FUNC GLOBAL HIDDEN 15 _fini + 79: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 __bss_end__ + 80: 0000000000000000 0 FUNC GLOBAL DEFAULT UND malloc@GLIBC_2.17 + 81: 0000000000000000 0 FUNC GLOBAL DEFAULT UND memset@GLIBC_2.17 + 82: 0000000000020060 1 OBJECT GLOBAL DEFAULT 24 password + 83: 0000000000020050 0 NOTYPE GLOBAL DEFAULT 24 __data_start + 84: 0000000000000000 0 NOTYPE WEAK DEFAULT UND __gmon_start__ + 85: 0000000000020058 0 OBJECT GLOBAL HIDDEN 24 __dso_handle + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND abort@GLIBC_2.17 + 87: 00000000000009b4 4 OBJECT GLOBAL DEFAULT 16 _IO_stdin_used + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 89: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 _end + 90: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 91: 0000000000000800 52 FUNC GLOBAL DEFAULT 14 _start + 92: 0000000000020078 8 OBJECT GLOBAL DEFAULT 25 buf + 93: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 25 __end__ + 94: 0000000000020061 11 OBJECT GLOBAL DEFAULT 24 stext + 95: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 25 __bss_start + 96: 0000000000000914 140 FUNC GLOBAL DEFAULT 14 main + 97: 0000000000020070 0 OBJECT GLOBAL HIDDEN 24 __TMC_END__ + 98: 0000000000000000 0 NOTYPE WEAK DEFAULT UND _ITM_registerTMCloneTable + 99: 0000000000000728 0 FUNC GLOBAL HIDDEN 12 _init diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/config.mk b/src/test/incorrect/malloc_memcpy_strlen_memset_free/config.mk new file mode 100644 index 000000000..3d7367cb4 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/config.mk @@ -0,0 +1 @@ +ENABLED_COMPILERS = clang_O2 gcc_O2 diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/extraspec.bpl b/src/test/incorrect/malloc_memcpy_strlen_memset_free/extraspec.bpl new file mode 100644 index 000000000..be56c0989 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/extraspec.bpl @@ -0,0 +1,20 @@ + +function {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) returns (bool); +function {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) returns (bool); + + +var malloc_count: int; +var malloc_base: [int]bv64; +var malloc_end: [int]bv64; +var malloc_id: [bv64]int; + +var Gamma_malloc_count: bool; +var Gamma_malloc_base: bool; +var Gamma_malloc_end: bool; +var Gamma_malloc_id: bool; + + +// because named wrong in generated file +function {:inline} in_bounds64(base: bv64, len: bv64, i: bv64) returns (bool) { + (if bvule64(base, bvadd64(base, len)) then (bvule64(base, i) && bvult64(i, bvadd64(base, len))) else (bvule64(base, i) || bvult64(i, bvadd64(base, len)))) +} diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.adt b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.adt new file mode 100644 index 000000000..7fbe7d8d3 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.adt @@ -0,0 +1,747 @@ +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 2452 20 2452)\n(code-region 1984 468 1984)\n(code-region 1776 192 1776)\n(code-region 1752 24 1752)\n(code-start 2228)\n(code-start 2176)\n(code-start 1984)\n(entry-point 2176)\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 1984 140)\n(llvm:code-entry _start 2176 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 2452 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 2448 0)\n(llvm:code-entry __do_global_dtors_aux 2368 0)\n(llvm:code-entry register_tm_clones 2304 0)\n(llvm:code-entry deregister_tm_clones 2256 0)\n(llvm:code-entry call_weak_fn 2228 20)\n(llvm:code-entry .fini 2452 20)\n(llvm:code-entry .text 1984 468)\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 2476 60)\n(llvm:elf-program-header 05 596 68)\n(llvm:elf-program-header 04 64984 480)\n(llvm:elf-program-header 03 64968 676)\n(llvm:elf-program-header 02 0 2716)\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 2476 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 696)\n(llvm:elf-virtual-program-header 02 0 2716)\n(llvm:elf-virtual-program-header 01 568 27)\n(llvm:elf-virtual-program-header 00 64 504)\n(llvm:entry-point 2176)\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 68723)\n(llvm:section-entry .strtab 0 691 68032)\n(llvm:section-entry .symtab 0 2352 65680)\n(llvm:section-entry .comment 0 30 65644)\n(llvm:section-entry .bss 131184 16 65644)\n(llvm:section-entry .data 131152 28 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 2536 180 2536)\n(llvm:section-entry .eh_frame_hdr 2476 60 2476)\n(llvm:section-entry .rodata 2472 4 2472)\n(llvm:section-entry .fini 2452 20 2452)\n(llvm:section-entry .text 1984 468 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 1984 140 1984 1984)\n(llvm:symbol-entry _start 2176 52 2176 2176)\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 2452 0 2452 2452)\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 2448 0 2448 2448)\n(llvm:symbol-entry __do_global_dtors_aux 2368 0 2368 2368)\n(llvm:symbol-entry register_tm_clones 2304 0 2304 2304)\n(llvm:symbol-entry deregister_tm_clones 2256 0 2256 2256)\n(llvm:symbol-entry call_weak_fn 2228 20 2228 2228)\n(mapped 0 2716 0)\n(mapped 130504 676 64968)\n(named-region 0 2716 02)\n(named-region 130504 696 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 468 .text)\n(named-region 2452 20 .fini)\n(named-region 2472 4 .rodata)\n(named-region 2476 60 .eh_frame_hdr)\n(named-region 2536 180 .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 28 .data)\n(named-region 131184 16 .bss)\n(named-region 0 30 .comment)\n(named-region 0 2352 .symtab)\n(named-region 0 691 .strtab)\n(named-region 0 259 .shstrtab)\n(named-symbol 2228 call_weak_fn)\n(named-symbol 2256 deregister_tm_clones)\n(named-symbol 2304 register_tm_clones)\n(named-symbol 2368 __do_global_dtors_aux)\n(named-symbol 2448 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 2452 _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 2176 _start)\n(named-symbol 1984 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 468)\n(section 2452 20)\n(section 2472 4)\n(section 2476 60)\n(section 2536 180)\n(section 130504 8)\n(section 130512 8)\n(section 130520 480)\n(section 131000 48)\n(section 131048 104)\n(section 131152 28)\n(section 131184 16)\n(section 0 30)\n(section 0 2352)\n(section 0 691)\n(section 0 259)\n(segment 0 2716 true false true)\n(segment 130504 696 true true false)\n(subarch v8)\n(symbol-chunk 2228 20 2228)\n(symbol-chunk 2176 52 2176)\n(symbol-chunk 1984 140 1984)\n(symbol-value 2228 2228)\n(symbol-value 2256 2256)\n(symbol-value 2304 2304)\n(symbol-value 2368 2368)\n(symbol-value 2448 2448)\n(symbol-value 2452 2452)\n(symbol-value 2176 2176)\n(symbol-value 1984 1984)\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\x80\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x78\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\x9c\x0a\x00\x00\x00\x00\x00\x00\x9c\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\x80\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x78\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\x9c\x0a\x00\x00\x00\x00\x00\x00\x9c\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\xa4\x02\x00\x00\x00\x00\x00\x00\xb8\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\xac\x09\x00\x00\x00\x00\x00\x00\xac\x09\x00\x00\x00\x00\x00\x00\xac\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\x29\x2f\x62\xd0\x81\xb0\xac\x00\xe9\x2d\x9a\xa1\x95\x8c\xda\x3a\x8d\xc8\xeb\x09\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"), +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\x80\x08\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x78\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\x9c\x0a\x00\x00\x00\x00\x00\x00\x9c\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\xa4\x02\x00\x00\x00\x00\x00\x00\xb8\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\xac\x09\x00\x00\x00\x00\x00\x00\xac\x09\x00\x00\x00\x00\x00\x00\xac\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\x29\x2f\x62\xd0\x81\xb0\xac\x00\xe9\x2d\x9a\xa1\x95\x8c\xda\x3a\x8d\xc8\xeb\x09\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\x90\x09\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x40\x09\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xc0\x07\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\x74\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\xfd\x7b\xbd\xa9\x60\x01\x80\xd2\xfd\x03\x00\x91\xf3\x53\x01\xa9\x14\x01\x00\x90\xf5\x13\x00\xf9\xde\xff\xff\x97\x15\x01\x00\x90\xb5\x82\x01\x91\xf3\x03\x00\xaa\xe0\x03\x15\xaa\x93\x3e\x00\xf9\xcc\xff\xff\x97\xe1\x03\x15\xaa\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xc4\xff\xff\x97\xe0\x03\x13\xaa\xe2\xff\xff\x97\x80\x3e\x40\xf9\x1f\x10\x00\x39\x93\x3e\x40\xf9\xe0\x03\x13\xaa\xc1\xff\xff\x97\x21\x00\x80\x52\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xcd\xff\xff\x97\x80\x3e\x40\xf9\xdb\xff\xff\x97\xf3\x53\x41\xa9\x00\x00\x80\x52\xf5\x13\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\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\xa1\xff\xff\x97\xb4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xac\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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"), +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\x80\x08\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\x29\x2f\x62\xd0\x81\xb0\xac\x00\xe9\x2d\x9a\xa1\x95\x8c\xda\x3a\x8d\xc8\xeb\x09"), +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\x90\x09\x00\x00\x00\x00\x00\x00\xd0\xfd\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\x40\x09\x00\x00\x00\x00\x00\x00\xd8\xff\x01\x00\x00\x00\x00\x00\x03\x04\x00\x00\x00\x00\x00\x00\xc0\x07\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\x74\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", 0x994, "\x1f\x20\x03\xd5\xfd\x7b\xbf\xa9\xfd\x03\x00\x91\xfd\x7b\xc1\xa8\xc0\x03\x5f\xd6"), +Section(".rodata", 0x9A8, "\x01\x00\x02\x00"), +Section(".eh_frame_hdr", 0x9AC, "\x01\x1b\x03\x3b\x38\x00\x00\x00\x06\x00\x00\x00\x14\xfe\xff\xff\xc4\x00\x00\x00\xd4\xfe\xff\xff\x50\x00\x00\x00\x24\xff\xff\xff\x64\x00\x00\x00\x54\xff\xff\xff\x78\x00\x00\x00\x94\xff\xff\xff\x8c\x00\x00\x00\xe4\xff\xff\xff\xb0\x00\x00\x00"), +Section(".eh_frame", 0x9E8, "\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\x7c\xfe\xff\xff\x34\x00\x00\x00\x00\x41\x07\x1e\x10\x00\x00\x00\x2c\x00\x00\x00\xb8\xfe\xff\xff\x30\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x40\x00\x00\x00\xd4\xfe\xff\xff\x3c\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x54\x00\x00\x00\x00\xff\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\x2c\xff\xff\xff\x04\x00\x00\x00\x00\x00\x00\x00\x24\x00\x00\x00\x8c\x00\x00\x00\x48\xfd\xff\xff\x8c\x00\x00\x00\x00\x41\x0e\x30\x9d\x06\x9e\x05\x43\x93\x04\x94\x03\x42\x95\x02\x5c\xde\xdd\xd5\xd3\xd4\x0e\x00\x00\x00\x00\x00"), +Section(".fini_array", 0x1FDD0, "\x40\x09\x00\x00\x00\x00\x00\x00"), +Section(".init_array", 0x1FDC8, "\x90\x09\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\x94\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(".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\xc0\x07\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\x75\x73\x65\x72\x3a\x70\x61\x73\x73\x00\x00\x07"), +Section(".text", 0x7C0, "\xfd\x7b\xbd\xa9\x60\x01\x80\xd2\xfd\x03\x00\x91\xf3\x53\x01\xa9\x14\x01\x00\x90\xf5\x13\x00\xf9\xde\xff\xff\x97\x15\x01\x00\x90\xb5\x82\x01\x91\xf3\x03\x00\xaa\xe0\x03\x15\xaa\x93\x3e\x00\xf9\xcc\xff\xff\x97\xe1\x03\x15\xaa\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xc4\xff\xff\x97\xe0\x03\x13\xaa\xe2\xff\xff\x97\x80\x3e\x40\xf9\x1f\x10\x00\x39\x93\x3e\x40\xf9\xe0\x03\x13\xaa\xc1\xff\xff\x97\x21\x00\x80\x52\xe2\x03\x00\xaa\xe0\x03\x13\xaa\xcd\xff\xff\x97\x80\x3e\x40\xf9\xdb\xff\xff\x97\xf3\x53\x41\xa9\x00\x00\x80\x52\xf5\x13\x40\xf9\xfd\x7b\xc3\xa8\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x1f\x20\x03\xd5\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\xa1\xff\xff\x97\xb4\xff\xff\x97\xe0\x00\x00\xf0\x00\xe8\x47\xf9\x40\x00\x00\xb4\xac\xff\xff\x17\xc0\x03\x5f\xd6\x1f\x20\x03\xd5\x1f\x20\x03\xd5\x00\x01\x00\x90\x00\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc0\x01\x91\x01\x01\x00\x90\x21\xc0\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\xc2\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\x75\xff\xff\x97\xd8\xff\xff\x97\x20\x00\x80\x52\x60\xc2\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")]), +Memmap([Annotation(Region(0x0,0xA9B), Attr("segment","02 0 2716")), +Annotation(Region(0x7C0,0x84B), Attr("symbol","\"main\"")), +Annotation(Region(0x0,0x102), Attr("section","\".shstrtab\"")), +Annotation(Region(0x0,0x2B2), 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,0x84B), Attr("symbol-info","main 0x7C0 140")), +Annotation(Region(0x880,0x8B3), Attr("symbol","\"_start\"")), +Annotation(Region(0x880,0x8B3), Attr("symbol-info","_start 0x880 52")), +Annotation(Region(0x8B4,0x8C7), Attr("symbol","\"call_weak_fn\"")), +Annotation(Region(0x8B4,0x8C7), Attr("symbol-info","call_weak_fn 0x8B4 20")), +Annotation(Region(0x994,0x9A7), Attr("section","\".fini\"")), +Annotation(Region(0x9A8,0x9AB), Attr("section","\".rodata\"")), +Annotation(Region(0x9AC,0x9E7), Attr("section","\".eh_frame_hdr\"")), +Annotation(Region(0x9E8,0xA9B), Attr("section","\".eh_frame\"")), +Annotation(Region(0x1FDC8,0x2006B), Attr("segment","03 0x1FDC8 696")), +Annotation(Region(0x1FDD0,0x1FDD7), Attr("section","\".fini_array\"")), +Annotation(Region(0x1FDC8,0x1FDCF), Attr("section","\".init_array\"")), +Annotation(Region(0x1FDD8,0x1FFB7), Attr("section","\".dynamic\"")), +Annotation(Region(0x1FFB8,0x1FFE7), Attr("section","\".got\"")), +Annotation(Region(0x1FFE8,0x2004F), Attr("section","\".got.plt\"")), +Annotation(Region(0x20050,0x2006B), Attr("section","\".data\"")), +Annotation(Region(0x7C0,0x993), Attr("section","\".text\"")), +Annotation(Region(0x7C0,0x993), Attr("code-region","()")), +Annotation(Region(0x994,0x9A7), Attr("code-region","()"))]), +Program(Tid(2_096, "%00000830"), Attrs([]), + Subs([Sub(Tid(2_025, "@__cxa_finalize"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x740"), +Attr("stub","()")]), "__cxa_finalize", Args([Arg(Tid(2_097, "%00000831"), + 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_229, "@__cxa_finalize"), + Attrs([Attr("address","0x740")]), Phis([]), +Defs([Def(Tid(1_617, "%00000651"), Attrs([Attr("address","0x740"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_624, "%00000658"), 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_630, "%0000065e"), 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_635, "%00000663"), + Attrs([Attr("address","0x74C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_026, "@__do_global_dtors_aux"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x940")]), + "__do_global_dtors_aux", Args([Arg(Tid(2_098, "%00000832"), + 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(1_083, "@__do_global_dtors_aux"), + Attrs([Attr("address","0x940")]), Phis([]), +Defs([Def(Tid(1_087, "%0000043f"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("#6",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551584,64))), +Def(Tid(1_093, "%00000445"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#6",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_099, "%0000044b"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), 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_103, "%0000044f"), Attrs([Attr("address","0x940"), +Attr("insn","stp x29, x30, [sp, #-0x20]!")]), Var("R31",Imm(64)), +Var("#6",Imm(64))), Def(Tid(1_109, "%00000455"), + Attrs([Attr("address","0x944"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_117, "%0000045d"), + Attrs([Attr("address","0x948"), 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(1_122, "%00000462"), Attrs([Attr("address","0x94C"), +Attr("insn","adrp x19, #0x20000")]), Var("R19",Imm(64)), Int(131072,64)), +Def(Tid(1_129, "%00000469"), Attrs([Attr("address","0x950"), +Attr("insn","ldrb w0, [x19, #0x70]")]), Var("R0",Imm(64)), +UNSIGNED(64,Load(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),LittleEndian(),8)))]), +Jmps([Goto(Tid(1_135, "%0000046f"), Attrs([Attr("address","0x954"), +Attr("insn","tbnz w0, #0x0, #0x28")]), + EQ(Extract(0,0,Var("R0",Imm(64))),Int(1,1)), +Direct(Tid(1_133, "%0000046d"))), Goto(Tid(2_086, "%00000826"), Attrs([]), + Int(1,1), Direct(Tid(1_174, "%00000496")))])), Blk(Tid(1_174, "%00000496"), + Attrs([Attr("address","0x958")]), Phis([]), +Defs([Def(Tid(1_177, "%00000499"), Attrs([Attr("address","0x958"), +Attr("insn","adrp x0, #0x1f000")]), Var("R0",Imm(64)), Int(126976,64)), +Def(Tid(1_184, "%000004a0"), Attrs([Attr("address","0x95C"), +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_190, "%000004a6"), Attrs([Attr("address","0x960"), +Attr("insn","cbz x0, #0x10")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(1_188, "%000004a4"))), Goto(Tid(2_087, "%00000827"), Attrs([]), + Int(1,1), Direct(Tid(1_213, "%000004bd")))])), Blk(Tid(1_213, "%000004bd"), + Attrs([Attr("address","0x964")]), Phis([]), +Defs([Def(Tid(1_216, "%000004c0"), Attrs([Attr("address","0x964"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_223, "%000004c7"), Attrs([Attr("address","0x968"), +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_228, "%000004cc"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x22c")]), Var("R30",Imm(64)), Int(2416,64))]), +Jmps([Call(Tid(1_231, "%000004cf"), Attrs([Attr("address","0x96C"), +Attr("insn","bl #-0x22c")]), Int(1,1), +(Direct(Tid(2_025, "@__cxa_finalize")),Direct(Tid(1_188, "%000004a4"))))])), +Blk(Tid(1_188, "%000004a4"), Attrs([Attr("address","0x970")]), Phis([]), +Defs([Def(Tid(1_196, "%000004ac"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0xa0")]), Var("R30",Imm(64)), Int(2420,64))]), +Jmps([Call(Tid(1_198, "%000004ae"), Attrs([Attr("address","0x970"), +Attr("insn","bl #-0xa0")]), Int(1,1), +(Direct(Tid(2_039, "@deregister_tm_clones")),Direct(Tid(1_200, "%000004b0"))))])), +Blk(Tid(1_200, "%000004b0"), Attrs([Attr("address","0x974")]), Phis([]), +Defs([Def(Tid(1_203, "%000004b3"), Attrs([Attr("address","0x974"), +Attr("insn","mov w0, #0x1")]), Var("R0",Imm(64)), Int(1,64)), +Def(Tid(1_211, "%000004bb"), Attrs([Attr("address","0x978"), +Attr("insn","strb w0, [x19, #0x70]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R19",Imm(64)),Int(112,64)),Extract(7,0,Var("R0",Imm(64))),LittleEndian(),8))]), +Jmps([Goto(Tid(2_088, "%00000828"), Attrs([]), Int(1,1), +Direct(Tid(1_133, "%0000046d")))])), Blk(Tid(1_133, "%0000046d"), + Attrs([Attr("address","0x97C")]), Phis([]), +Defs([Def(Tid(1_143, "%00000477"), Attrs([Attr("address","0x97C"), +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_150, "%0000047e"), Attrs([Attr("address","0x980"), +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(1_155, "%00000483"), Attrs([Attr("address","0x980"), +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(1_159, "%00000487"), Attrs([Attr("address","0x980"), +Attr("insn","ldp x29, x30, [sp], #0x20")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(32,64)))]), Jmps([Call(Tid(1_164, "%0000048c"), + Attrs([Attr("address","0x984"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_030, "@__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_099, "%00000833"), + 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_100, "%00000834"), 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_101, "%00000835"), 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_102, "%00000836"), 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_103, "%00000837"), 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(916, "@__libc_start_main"), + Attrs([Attr("address","0x730")]), Phis([]), +Defs([Def(Tid(1_595, "%0000063b"), Attrs([Attr("address","0x730"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_602, "%00000642"), 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_608, "%00000648"), 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_613, "%0000064d"), + Attrs([Attr("address","0x73C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_031, "@_fini"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x994")]), + "_fini", Args([Arg(Tid(2_104, "%00000838"), + 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","0x994")]), Phis([]), Defs([Def(Tid(38, "%00000026"), + Attrs([Attr("address","0x998"), +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","0x998"), +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","0x998"), +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","0x998"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#0",Imm(64))), Def(Tid(60, "%0000003c"), Attrs([Attr("address","0x99C"), +Attr("insn","mov x29, sp")]), Var("R29",Imm(64)), Var("R31",Imm(64))), +Def(Tid(67, "%00000043"), Attrs([Attr("address","0x9A0"), +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","0x9A0"), +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","0x9A0"), +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","0x9A4"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_032, "@_init"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x6D8")]), + "_init", Args([Arg(Tid(2_105, "%00000839"), + 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_795, "@_init"), + Attrs([Attr("address","0x6D8")]), Phis([]), +Defs([Def(Tid(1_801, "%00000709"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("#8",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551600,64))), +Def(Tid(1_807, "%0000070f"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#8",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(1_813, "%00000715"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#8",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(1_817, "%00000719"), Attrs([Attr("address","0x6DC"), +Attr("insn","stp x29, x30, [sp, #-0x10]!")]), Var("R31",Imm(64)), +Var("#8",Imm(64))), Def(Tid(1_823, "%0000071f"), + Attrs([Attr("address","0x6E0"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(1_828, "%00000724"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x1d0")]), + Var("R30",Imm(64)), Int(1768,64))]), Jmps([Call(Tid(1_830, "%00000726"), + Attrs([Attr("address","0x6E4"), Attr("insn","bl #0x1d0")]), Int(1,1), +(Direct(Tid(2_037, "@call_weak_fn")),Direct(Tid(1_832, "%00000728"))))])), +Blk(Tid(1_832, "%00000728"), Attrs([Attr("address","0x6E8")]), Phis([]), +Defs([Def(Tid(1_837, "%0000072d"), 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(1_842, "%00000732"), 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(1_846, "%00000736"), 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(1_851, "%0000073b"), + Attrs([Attr("address","0x6EC"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_033, "@_start"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x880"), +Attr("entry-point","()")]), "_start", Args([Arg(Tid(2_106, "%0000083a"), + 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(853, "@_start"), + Attrs([Attr("address","0x880")]), Phis([]), Defs([Def(Tid(858, "%0000035a"), + Attrs([Attr("address","0x884"), Attr("insn","mov x29, #0x0")]), + Var("R29",Imm(64)), Int(0,64)), Def(Tid(863, "%0000035f"), + Attrs([Attr("address","0x888"), Attr("insn","mov x30, #0x0")]), + Var("R30",Imm(64)), Int(0,64)), Def(Tid(869, "%00000365"), + Attrs([Attr("address","0x88C"), Attr("insn","mov x5, x0")]), + Var("R5",Imm(64)), Var("R0",Imm(64))), Def(Tid(876, "%0000036c"), + Attrs([Attr("address","0x890"), Attr("insn","ldr x1, [sp]")]), + Var("R1",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("R31",Imm(64)),LittleEndian(),64)), +Def(Tid(882, "%00000372"), Attrs([Attr("address","0x894"), +Attr("insn","add x2, sp, #0x8")]), Var("R2",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(8,64))), Def(Tid(888, "%00000378"), + Attrs([Attr("address","0x898"), Attr("insn","mov x6, sp")]), + Var("R6",Imm(64)), Var("R31",Imm(64))), Def(Tid(893, "%0000037d"), + Attrs([Attr("address","0x89C"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(900, "%00000384"), + Attrs([Attr("address","0x8A0"), 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(905, "%00000389"), Attrs([Attr("address","0x8A4"), +Attr("insn","mov x3, #0x0")]), Var("R3",Imm(64)), Int(0,64)), +Def(Tid(910, "%0000038e"), Attrs([Attr("address","0x8A8"), +Attr("insn","mov x4, #0x0")]), Var("R4",Imm(64)), Int(0,64)), +Def(Tid(915, "%00000393"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x17c")]), Var("R30",Imm(64)), Int(2224,64))]), +Jmps([Call(Tid(918, "%00000396"), Attrs([Attr("address","0x8AC"), +Attr("insn","bl #-0x17c")]), Int(1,1), +(Direct(Tid(2_030, "@__libc_start_main")),Direct(Tid(920, "%00000398"))))])), +Blk(Tid(920, "%00000398"), Attrs([Attr("address","0x8B0")]), Phis([]), +Defs([Def(Tid(923, "%0000039b"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0x130")]), Var("R30",Imm(64)), Int(2228,64))]), +Jmps([Call(Tid(926, "%0000039e"), Attrs([Attr("address","0x8B0"), +Attr("insn","bl #-0x130")]), Int(1,1), +(Direct(Tid(2_036, "@abort")),Direct(Tid(2_089, "%00000829"))))])), +Blk(Tid(2_089, "%00000829"), Attrs([]), Phis([]), Defs([]), +Jmps([Call(Tid(2_090, "%0000082a"), Attrs([]), Int(1,1), +(Direct(Tid(2_037, "@call_weak_fn")),))]))])), Sub(Tid(2_036, "@abort"), + Attrs([Attr("noreturn","()"), Attr("c.proto","void (*)(void)"), +Attr("address","0x780"), Attr("stub","()")]), "abort", Args([]), +Blks([Blk(Tid(924, "@abort"), Attrs([Attr("address","0x780")]), Phis([]), +Defs([Def(Tid(1_705, "%000006a9"), Attrs([Attr("address","0x780"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_712, "%000006b0"), 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_718, "%000006b6"), 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_723, "%000006bb"), + Attrs([Attr("address","0x78C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_037, "@call_weak_fn"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8B4")]), + "call_weak_fn", Args([Arg(Tid(2_107, "%0000083b"), + 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(928, "@call_weak_fn"), + Attrs([Attr("address","0x8B4")]), Phis([]), Defs([Def(Tid(931, "%000003a3"), + Attrs([Attr("address","0x8B4"), Attr("insn","adrp x0, #0x1f000")]), + Var("R0",Imm(64)), Int(126976,64)), Def(Tid(938, "%000003aa"), + Attrs([Attr("address","0x8B8"), 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(944, "%000003b0"), Attrs([Attr("address","0x8BC"), +Attr("insn","cbz x0, #0x8")]), EQ(Var("R0",Imm(64)),Int(0,64)), +Direct(Tid(942, "%000003ae"))), Goto(Tid(2_091, "%0000082b"), Attrs([]), + Int(1,1), Direct(Tid(1_293, "%0000050d")))])), Blk(Tid(942, "%000003ae"), + Attrs([Attr("address","0x8C4")]), Phis([]), Defs([]), +Jmps([Call(Tid(950, "%000003b6"), Attrs([Attr("address","0x8C4"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_293, "%0000050d"), Attrs([Attr("address","0x8C0")]), Phis([]), +Defs([]), Jmps([Goto(Tid(1_296, "%00000510"), Attrs([Attr("address","0x8C0"), +Attr("insn","b #-0x150")]), Int(1,1), +Direct(Tid(1_294, "@__gmon_start__")))])), Blk(Tid(1_294, "@__gmon_start__"), + Attrs([Attr("address","0x770")]), Phis([]), +Defs([Def(Tid(1_683, "%00000693"), Attrs([Attr("address","0x770"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_690, "%0000069a"), 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_696, "%000006a0"), 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_701, "%000006a5"), + Attrs([Attr("address","0x77C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_039, "@deregister_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x8D0")]), + "deregister_tm_clones", Args([Arg(Tid(2_108, "%0000083c"), + 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(956, "@deregister_tm_clones"), + Attrs([Attr("address","0x8D0")]), Phis([]), Defs([Def(Tid(959, "%000003bf"), + Attrs([Attr("address","0x8D0"), Attr("insn","adrp x0, #0x20000")]), + Var("R0",Imm(64)), Int(131072,64)), Def(Tid(965, "%000003c5"), + Attrs([Attr("address","0x8D4"), Attr("insn","add x0, x0, #0x70")]), + Var("R0",Imm(64)), PLUS(Var("R0",Imm(64)),Int(112,64))), +Def(Tid(970, "%000003ca"), Attrs([Attr("address","0x8D8"), +Attr("insn","adrp x1, #0x20000")]), Var("R1",Imm(64)), Int(131072,64)), +Def(Tid(976, "%000003d0"), Attrs([Attr("address","0x8DC"), +Attr("insn","add x1, x1, #0x70")]), Var("R1",Imm(64)), +PLUS(Var("R1",Imm(64)),Int(112,64))), Def(Tid(982, "%000003d6"), + Attrs([Attr("address","0x8E0"), Attr("insn","cmp x1, x0")]), + Var("#4",Imm(64)), NOT(Var("R0",Imm(64)))), Def(Tid(987, "%000003db"), + Attrs([Attr("address","0x8E0"), Attr("insn","cmp x1, x0")]), + Var("#5",Imm(64)), PLUS(Var("R1",Imm(64)),NOT(Var("R0",Imm(64))))), +Def(Tid(993, "%000003e1"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("VF",Imm(1)), +NEQ(SIGNED(65,PLUS(Var("#5",Imm(64)),Int(1,64))),PLUS(PLUS(SIGNED(65,Var("R1",Imm(64))),SIGNED(65,Var("#4",Imm(64)))),Int(1,65)))), +Def(Tid(999, "%000003e7"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("CF",Imm(1)), +NEQ(UNSIGNED(65,PLUS(Var("#5",Imm(64)),Int(1,64))),PLUS(PLUS(UNSIGNED(65,Var("R1",Imm(64))),UNSIGNED(65,Var("#4",Imm(64)))),Int(1,65)))), +Def(Tid(1_003, "%000003eb"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("ZF",Imm(1)), +EQ(PLUS(Var("#5",Imm(64)),Int(1,64)),Int(0,64))), +Def(Tid(1_007, "%000003ef"), Attrs([Attr("address","0x8E0"), +Attr("insn","cmp x1, x0")]), Var("NF",Imm(1)), +Extract(63,63,PLUS(Var("#5",Imm(64)),Int(1,64))))]), +Jmps([Goto(Tid(1_013, "%000003f5"), Attrs([Attr("address","0x8E4"), +Attr("insn","b.eq #0x18")]), EQ(Var("ZF",Imm(1)),Int(1,1)), +Direct(Tid(1_011, "%000003f3"))), Goto(Tid(2_092, "%0000082c"), Attrs([]), + Int(1,1), Direct(Tid(1_263, "%000004ef")))])), Blk(Tid(1_263, "%000004ef"), + Attrs([Attr("address","0x8E8")]), Phis([]), +Defs([Def(Tid(1_266, "%000004f2"), Attrs([Attr("address","0x8E8"), +Attr("insn","adrp x1, #0x1f000")]), Var("R1",Imm(64)), Int(126976,64)), +Def(Tid(1_273, "%000004f9"), Attrs([Attr("address","0x8EC"), +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_278, "%000004fe"), Attrs([Attr("address","0x8F0"), +Attr("insn","cbz x1, #0xc")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(1_011, "%000003f3"))), Goto(Tid(2_093, "%0000082d"), Attrs([]), + Int(1,1), Direct(Tid(1_282, "%00000502")))])), Blk(Tid(1_011, "%000003f3"), + Attrs([Attr("address","0x8FC")]), Phis([]), Defs([]), +Jmps([Call(Tid(1_019, "%000003fb"), Attrs([Attr("address","0x8FC"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_282, "%00000502"), Attrs([Attr("address","0x8F4")]), Phis([]), +Defs([Def(Tid(1_286, "%00000506"), Attrs([Attr("address","0x8F4"), +Attr("insn","mov x16, x1")]), Var("R16",Imm(64)), Var("R1",Imm(64)))]), +Jmps([Call(Tid(1_291, "%0000050b"), Attrs([Attr("address","0x8F8"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_042, "@frame_dummy"), Attrs([Attr("c.proto","signed (*)(void)"), +Attr("address","0x990")]), "frame_dummy", Args([Arg(Tid(2_109, "%0000083d"), + 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(1_170, "@frame_dummy"), + Attrs([Attr("address","0x990")]), Phis([]), Defs([]), +Jmps([Call(Tid(1_172, "%00000494"), Attrs([Attr("address","0x990"), +Attr("insn","b #-0x90")]), Int(1,1), +(Direct(Tid(2_049, "@register_tm_clones")),))]))])), Sub(Tid(2_043, "@free"), + Attrs([Attr("c.proto","void (*)(void* ptr)"), Attr("address","0x7A0"), +Attr("stub","()")]), "free", Args([Arg(Tid(2_110, "%0000083e"), + 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(774, "@free"), Attrs([Attr("address","0x7A0")]), + Phis([]), Defs([Def(Tid(1_749, "%000006d5"), Attrs([Attr("address","0x7A0"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_756, "%000006dc"), 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_762, "%000006e2"), 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_767, "%000006e7"), + Attrs([Attr("address","0x7AC"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_044, "@main"), + Attrs([Attr("c.proto","signed (*)(signed argc, const char** argv)"), +Attr("address","0x7C0")]), "main", Args([Arg(Tid(2_111, "%0000083f"), + 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_112, "%00000840"), + 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_113, "%00000841"), + 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(553, "@main"), + Attrs([Attr("address","0x7C0")]), Phis([]), Defs([Def(Tid(557, "%0000022d"), + Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("#1",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(18446744073709551568,64))), +Def(Tid(563, "%00000233"), Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#1",Imm(64)),Var("R29",Imm(64)),LittleEndian(),64)), +Def(Tid(569, "%00000239"), Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#1",Imm(64)),Int(8,64)),Var("R30",Imm(64)),LittleEndian(),64)), +Def(Tid(573, "%0000023d"), Attrs([Attr("address","0x7C0"), +Attr("insn","stp x29, x30, [sp, #-0x30]!")]), Var("R31",Imm(64)), +Var("#1",Imm(64))), Def(Tid(578, "%00000242"), + Attrs([Attr("address","0x7C4"), Attr("insn","mov x0, #0xb")]), + Var("R0",Imm(64)), Int(11,64)), Def(Tid(584, "%00000248"), + Attrs([Attr("address","0x7C8"), Attr("insn","mov x29, sp")]), + Var("R29",Imm(64)), Var("R31",Imm(64))), Def(Tid(590, "%0000024e"), + Attrs([Attr("address","0x7CC"), Attr("insn","stp x19, x20, [sp, #0x10]")]), + Var("#2",Imm(64)), PLUS(Var("R31",Imm(64)),Int(16,64))), +Def(Tid(596, "%00000254"), Attrs([Attr("address","0x7CC"), +Attr("insn","stp x19, x20, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),Var("#2",Imm(64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(602, "%0000025a"), Attrs([Attr("address","0x7CC"), +Attr("insn","stp x19, x20, [sp, #0x10]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("#2",Imm(64)),Int(8,64)),Var("R20",Imm(64)),LittleEndian(),64)), +Def(Tid(607, "%0000025f"), Attrs([Attr("address","0x7D0"), +Attr("insn","adrp x20, #0x20000")]), Var("R20",Imm(64)), Int(131072,64)), +Def(Tid(615, "%00000267"), Attrs([Attr("address","0x7D4"), +Attr("insn","str x21, [sp, #0x20]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),Var("R21",Imm(64)),LittleEndian(),64)), +Def(Tid(620, "%0000026c"), Attrs([Attr("address","0x7D8"), +Attr("insn","bl #-0x88")]), Var("R30",Imm(64)), Int(2012,64))]), +Jmps([Call(Tid(623, "%0000026f"), Attrs([Attr("address","0x7D8"), +Attr("insn","bl #-0x88")]), Int(1,1), +(Direct(Tid(2_045, "@malloc")),Direct(Tid(625, "%00000271"))))])), +Blk(Tid(625, "%00000271"), Attrs([Attr("address","0x7DC")]), Phis([]), +Defs([Def(Tid(628, "%00000274"), Attrs([Attr("address","0x7DC"), +Attr("insn","adrp x21, #0x20000")]), Var("R21",Imm(64)), Int(131072,64)), +Def(Tid(634, "%0000027a"), Attrs([Attr("address","0x7E0"), +Attr("insn","add x21, x21, #0x60")]), Var("R21",Imm(64)), +PLUS(Var("R21",Imm(64)),Int(96,64))), Def(Tid(640, "%00000280"), + Attrs([Attr("address","0x7E4"), Attr("insn","mov x19, x0")]), + Var("R19",Imm(64)), Var("R0",Imm(64))), Def(Tid(646, "%00000286"), + Attrs([Attr("address","0x7E8"), Attr("insn","mov x0, x21")]), + Var("R0",Imm(64)), Var("R21",Imm(64))), Def(Tid(654, "%0000028e"), + Attrs([Attr("address","0x7EC"), Attr("insn","str x19, [x20, #0x78]")]), + Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R20",Imm(64)),Int(120,64)),Var("R19",Imm(64)),LittleEndian(),64)), +Def(Tid(659, "%00000293"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0xd0")]), Var("R30",Imm(64)), Int(2036,64))]), +Jmps([Call(Tid(662, "%00000296"), Attrs([Attr("address","0x7F0"), +Attr("insn","bl #-0xd0")]), Int(1,1), +(Direct(Tid(2_052, "@strlen")),Direct(Tid(664, "%00000298"))))])), +Blk(Tid(664, "%00000298"), Attrs([Attr("address","0x7F4")]), Phis([]), +Defs([Def(Tid(668, "%0000029c"), Attrs([Attr("address","0x7F4"), +Attr("insn","mov x1, x21")]), Var("R1",Imm(64)), Var("R21",Imm(64))), +Def(Tid(674, "%000002a2"), Attrs([Attr("address","0x7F8"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(680, "%000002a8"), Attrs([Attr("address","0x7FC"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(685, "%000002ad"), Attrs([Attr("address","0x800"), +Attr("insn","bl #-0xf0")]), Var("R30",Imm(64)), Int(2052,64))]), +Jmps([Call(Tid(688, "%000002b0"), Attrs([Attr("address","0x800"), +Attr("insn","bl #-0xf0")]), Int(1,1), +(Direct(Tid(2_046, "@memcpy")),Direct(Tid(690, "%000002b2"))))])), +Blk(Tid(690, "%000002b2"), Attrs([Attr("address","0x804")]), Phis([]), +Defs([Def(Tid(694, "%000002b6"), Attrs([Attr("address","0x804"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(699, "%000002bb"), Attrs([Attr("address","0x808"), +Attr("insn","bl #-0x78")]), Var("R30",Imm(64)), Int(2060,64))]), +Jmps([Call(Tid(702, "%000002be"), Attrs([Attr("address","0x808"), +Attr("insn","bl #-0x78")]), Int(1,1), +(Direct(Tid(2_048, "@puts")),Direct(Tid(704, "%000002c0"))))])), +Blk(Tid(704, "%000002c0"), Attrs([Attr("address","0x80C")]), Phis([]), +Defs([Def(Tid(709, "%000002c5"), Attrs([Attr("address","0x80C"), +Attr("insn","ldr x0, [x20, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R20",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(716, "%000002cc"), Attrs([Attr("address","0x810"), +Attr("insn","strb wzr, [x0, #0x4]")]), Var("mem",Mem(64,8)), +Store(Var("mem",Mem(64,8)),PLUS(Var("R0",Imm(64)),Int(4,64)),Int(0,8),LittleEndian(),8)), +Def(Tid(723, "%000002d3"), Attrs([Attr("address","0x814"), +Attr("insn","ldr x19, [x20, #0x78]")]), Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R20",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(729, "%000002d9"), Attrs([Attr("address","0x818"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(734, "%000002de"), Attrs([Attr("address","0x81C"), +Attr("insn","bl #-0xfc")]), Var("R30",Imm(64)), Int(2080,64))]), +Jmps([Call(Tid(736, "%000002e0"), Attrs([Attr("address","0x81C"), +Attr("insn","bl #-0xfc")]), Int(1,1), +(Direct(Tid(2_052, "@strlen")),Direct(Tid(738, "%000002e2"))))])), +Blk(Tid(738, "%000002e2"), Attrs([Attr("address","0x820")]), Phis([]), +Defs([Def(Tid(741, "%000002e5"), Attrs([Attr("address","0x820"), +Attr("insn","mov w1, #0x1")]), Var("R1",Imm(64)), Int(1,64)), +Def(Tid(747, "%000002eb"), Attrs([Attr("address","0x824"), +Attr("insn","mov x2, x0")]), Var("R2",Imm(64)), Var("R0",Imm(64))), +Def(Tid(753, "%000002f1"), Attrs([Attr("address","0x828"), +Attr("insn","mov x0, x19")]), Var("R0",Imm(64)), Var("R19",Imm(64))), +Def(Tid(758, "%000002f6"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Var("R30",Imm(64)), Int(2096,64))]), +Jmps([Call(Tid(761, "%000002f9"), Attrs([Attr("address","0x82C"), +Attr("insn","bl #-0xcc")]), Int(1,1), +(Direct(Tid(2_047, "@memset")),Direct(Tid(763, "%000002fb"))))])), +Blk(Tid(763, "%000002fb"), Attrs([Attr("address","0x830")]), Phis([]), +Defs([Def(Tid(768, "%00000300"), Attrs([Attr("address","0x830"), +Attr("insn","ldr x0, [x20, #0x78]")]), Var("R0",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R20",Imm(64)),Int(120,64)),LittleEndian(),64)), +Def(Tid(773, "%00000305"), Attrs([Attr("address","0x834"), +Attr("insn","bl #-0x94")]), Var("R30",Imm(64)), Int(2104,64))]), +Jmps([Call(Tid(776, "%00000308"), Attrs([Attr("address","0x834"), +Attr("insn","bl #-0x94")]), Int(1,1), +(Direct(Tid(2_043, "@free")),Direct(Tid(778, "%0000030a"))))])), +Blk(Tid(778, "%0000030a"), Attrs([Attr("address","0x838")]), Phis([]), +Defs([Def(Tid(782, "%0000030e"), Attrs([Attr("address","0x838"), +Attr("insn","ldp x19, x20, [sp, #0x10]")]), Var("#3",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(16,64))), Def(Tid(787, "%00000313"), + Attrs([Attr("address","0x838"), Attr("insn","ldp x19, x20, [sp, #0x10]")]), + Var("R19",Imm(64)), +Load(Var("mem",Mem(64,8)),Var("#3",Imm(64)),LittleEndian(),64)), +Def(Tid(792, "%00000318"), Attrs([Attr("address","0x838"), +Attr("insn","ldp x19, x20, [sp, #0x10]")]), Var("R20",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("#3",Imm(64)),Int(8,64)),LittleEndian(),64)), +Def(Tid(797, "%0000031d"), Attrs([Attr("address","0x83C"), +Attr("insn","mov w0, #0x0")]), Var("R0",Imm(64)), Int(0,64)), +Def(Tid(804, "%00000324"), Attrs([Attr("address","0x840"), +Attr("insn","ldr x21, [sp, #0x20]")]), Var("R21",Imm(64)), +Load(Var("mem",Mem(64,8)),PLUS(Var("R31",Imm(64)),Int(32,64)),LittleEndian(),64)), +Def(Tid(811, "%0000032b"), Attrs([Attr("address","0x844"), +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(816, "%00000330"), Attrs([Attr("address","0x844"), +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(820, "%00000334"), Attrs([Attr("address","0x844"), +Attr("insn","ldp x29, x30, [sp], #0x30")]), Var("R31",Imm(64)), +PLUS(Var("R31",Imm(64)),Int(48,64)))]), Jmps([Call(Tid(825, "%00000339"), + Attrs([Attr("address","0x848"), Attr("insn","ret")]), Int(1,1), +(Indirect(Var("R30",Imm(64))),))]))])), Sub(Tid(2_045, "@malloc"), + Attrs([Attr("c.proto","void* (*)(unsigned long size)"), +Attr("address","0x750"), Attr("malloc","()"), Attr("stub","()")]), "malloc", + Args([Arg(Tid(2_114, "%00000842"), 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_115, "%00000843"), + 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(621, "@malloc"), Attrs([Attr("address","0x750")]), Phis([]), +Defs([Def(Tid(1_639, "%00000667"), Attrs([Attr("address","0x750"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_646, "%0000066e"), 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_652, "%00000674"), 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_657, "%00000679"), + Attrs([Attr("address","0x75C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_046, "@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_116, "%00000844"), 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_117, "%00000845"), + 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_118, "%00000846"), 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_119, "%00000847"), 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(686, "@memcpy"), Attrs([Attr("address","0x710")]), Phis([]), +Defs([Def(Tid(1_551, "%0000060f"), Attrs([Attr("address","0x710"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_558, "%00000616"), 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_564, "%0000061c"), Attrs([Attr("address","0x718"), +Attr("insn","add x16, x16, #0x0")]), Var("R16",Imm(64)), +Var("R16",Imm(64)))]), Jmps([Call(Tid(1_569, "%00000621"), + Attrs([Attr("address","0x71C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_047, "@memset"), + Attrs([Attr("c.proto","void* (*)(void* buf, signed c, unsigned long n)"), +Attr("address","0x760"), Attr("stub","()")]), "memset", + Args([Arg(Tid(2_120, "%00000848"), 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_121, "%00000849"), + 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_122, "%0000084a"), + 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_123, "%0000084b"), 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(759, "@memset"), Attrs([Attr("address","0x760")]), Phis([]), +Defs([Def(Tid(1_661, "%0000067d"), Attrs([Attr("address","0x760"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_668, "%00000684"), 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_674, "%0000068a"), 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_679, "%0000068f"), + Attrs([Attr("address","0x76C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), Sub(Tid(2_048, "@puts"), + Attrs([Attr("c.proto","signed (*)( const char* s)"), +Attr("address","0x790"), Attr("stub","()")]), "puts", + Args([Arg(Tid(2_124, "%0000084c"), 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_125, "%0000084d"), 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(700, "@puts"), Attrs([Attr("address","0x790")]), Phis([]), +Defs([Def(Tid(1_727, "%000006bf"), Attrs([Attr("address","0x790"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_734, "%000006c6"), 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_740, "%000006cc"), 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_745, "%000006d1"), + Attrs([Attr("address","0x79C"), Attr("insn","br x17")]), Int(1,1), +(Indirect(Var("R17",Imm(64))),))]))])), +Sub(Tid(2_049, "@register_tm_clones"), + Attrs([Attr("c.proto","signed (*)(void)"), Attr("address","0x900")]), + "register_tm_clones", Args([Arg(Tid(2_126, "%0000084e"), + 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(1_021, "@register_tm_clones"), + Attrs([Attr("address","0x900")]), Phis([]), +Defs([Def(Tid(1_024, "%00000400"), Attrs([Attr("address","0x900"), +Attr("insn","adrp x0, #0x20000")]), Var("R0",Imm(64)), Int(131072,64)), +Def(Tid(1_030, "%00000406"), Attrs([Attr("address","0x904"), +Attr("insn","add x0, x0, #0x70")]), Var("R0",Imm(64)), +PLUS(Var("R0",Imm(64)),Int(112,64))), Def(Tid(1_035, "%0000040b"), + Attrs([Attr("address","0x908"), Attr("insn","adrp x1, #0x20000")]), + Var("R1",Imm(64)), Int(131072,64)), Def(Tid(1_041, "%00000411"), + Attrs([Attr("address","0x90C"), Attr("insn","add x1, x1, #0x70")]), + Var("R1",Imm(64)), PLUS(Var("R1",Imm(64)),Int(112,64))), +Def(Tid(1_048, "%00000418"), Attrs([Attr("address","0x910"), +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(1_054, "%0000041e"), Attrs([Attr("address","0x914"), +Attr("insn","lsr x2, x1, #63")]), Var("R2",Imm(64)), +Concat(Int(0,63),Extract(63,63,Var("R1",Imm(64))))), +Def(Tid(1_061, "%00000425"), Attrs([Attr("address","0x918"), +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(1_067, "%0000042b"), Attrs([Attr("address","0x91C"), +Attr("insn","asr x1, x1, #1")]), Var("R1",Imm(64)), +SIGNED(64,Extract(63,1,Var("R1",Imm(64)))))]), +Jmps([Goto(Tid(1_073, "%00000431"), Attrs([Attr("address","0x920"), +Attr("insn","cbz x1, #0x18")]), EQ(Var("R1",Imm(64)),Int(0,64)), +Direct(Tid(1_071, "%0000042f"))), Goto(Tid(2_094, "%0000082e"), Attrs([]), + Int(1,1), Direct(Tid(1_233, "%000004d1")))])), Blk(Tid(1_233, "%000004d1"), + Attrs([Attr("address","0x924")]), Phis([]), +Defs([Def(Tid(1_236, "%000004d4"), Attrs([Attr("address","0x924"), +Attr("insn","adrp x2, #0x1f000")]), Var("R2",Imm(64)), Int(126976,64)), +Def(Tid(1_243, "%000004db"), Attrs([Attr("address","0x928"), +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_248, "%000004e0"), Attrs([Attr("address","0x92C"), +Attr("insn","cbz x2, #0xc")]), EQ(Var("R2",Imm(64)),Int(0,64)), +Direct(Tid(1_071, "%0000042f"))), Goto(Tid(2_095, "%0000082f"), Attrs([]), + Int(1,1), Direct(Tid(1_252, "%000004e4")))])), Blk(Tid(1_071, "%0000042f"), + Attrs([Attr("address","0x938")]), Phis([]), Defs([]), +Jmps([Call(Tid(1_079, "%00000437"), Attrs([Attr("address","0x938"), +Attr("insn","ret")]), Int(1,1), (Indirect(Var("R30",Imm(64))),))])), +Blk(Tid(1_252, "%000004e4"), Attrs([Attr("address","0x930")]), Phis([]), +Defs([Def(Tid(1_256, "%000004e8"), Attrs([Attr("address","0x930"), +Attr("insn","mov x16, x2")]), Var("R16",Imm(64)), Var("R2",Imm(64)))]), +Jmps([Call(Tid(1_261, "%000004ed"), Attrs([Attr("address","0x934"), +Attr("insn","br x16")]), Int(1,1), (Indirect(Var("R16",Imm(64))),))]))])), +Sub(Tid(2_052, "@strlen"), + Attrs([Attr("c.proto","unsigned long (*)( const char* s)"), +Attr("pure","()"), Attr("address","0x720"), Attr("stub","()")]), "strlen", + Args([Arg(Tid(2_127, "%0000084f"), 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_128, "%00000850"), + 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(660, "@strlen"), + Attrs([Attr("address","0x720")]), Phis([]), +Defs([Def(Tid(1_573, "%00000625"), Attrs([Attr("address","0x720"), +Attr("insn","adrp x16, #0x20000")]), Var("R16",Imm(64)), Int(131072,64)), +Def(Tid(1_580, "%0000062c"), 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_586, "%00000632"), 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_591, "%00000637"), + 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/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir new file mode 100644 index 000000000..a2ee8b549 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.bir @@ -0,0 +1,350 @@ +00000830: program +000007e9: sub __cxa_finalize(__cxa_finalize_result) +00000831: __cxa_finalize_result :: out u32 = low:32[R0] + +000004cd: +00000651: R16 := 0x20000 +00000658: R17 := mem[R16 + 0x18, el]:u64 +0000065e: R16 := R16 + 0x18 +00000663: call R17 with noreturn + +000007ea: sub __do_global_dtors_aux(__do_global_dtors_aux_result) +00000832: __do_global_dtors_aux_result :: out u32 = low:32[R0] + +0000043b: +0000043f: #6 := R31 - 0x20 +00000445: mem := mem with [#6, el]:u64 <- R29 +0000044b: mem := mem with [#6 + 8, el]:u64 <- R30 +0000044f: R31 := #6 +00000455: R29 := R31 +0000045d: mem := mem with [R31 + 0x10, el]:u64 <- R19 +00000462: R19 := 0x20000 +00000469: R0 := pad:64[mem[R19 + 0x70]] +0000046f: when 0:0[R0] goto %0000046d +00000826: goto %00000496 + +00000496: +00000499: R0 := 0x1F000 +000004a0: R0 := mem[R0 + 0xFC8, el]:u64 +000004a6: when R0 = 0 goto %000004a4 +00000827: goto %000004bd + +000004bd: +000004c0: R0 := 0x20000 +000004c7: R0 := mem[R0 + 0x58, el]:u64 +000004cc: R30 := 0x970 +000004cf: call @__cxa_finalize with return %000004a4 + +000004a4: +000004ac: R30 := 0x974 +000004ae: call @deregister_tm_clones with return %000004b0 + +000004b0: +000004b3: R0 := 1 +000004bb: mem := mem with [R19 + 0x70] <- 7:0[R0] +00000828: goto %0000046d + +0000046d: +00000477: R19 := mem[R31 + 0x10, el]:u64 +0000047e: R29 := mem[R31, el]:u64 +00000483: R30 := mem[R31 + 8, el]:u64 +00000487: R31 := R31 + 0x20 +0000048c: call R30 with noreturn + +000007ee: sub __libc_start_main(__libc_start_main_main, __libc_start_main_arg2, __libc_start_main_arg3, __libc_start_main_auxv, __libc_start_main_result) +00000833: __libc_start_main_main :: in u64 = R0 +00000834: __libc_start_main_arg2 :: in u32 = low:32[R1] +00000835: __libc_start_main_arg3 :: in out u64 = R2 +00000836: __libc_start_main_auxv :: in out u64 = R3 +00000837: __libc_start_main_result :: out u32 = low:32[R0] + +00000394: +0000063b: R16 := 0x20000 +00000642: R17 := mem[R16 + 0x10, el]:u64 +00000648: R16 := R16 + 0x10 +0000064d: call R17 with noreturn + +000007ef: sub _fini(_fini_result) +00000838: _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 + +000007f0: sub _init(_init_result) +00000839: _init_result :: out u32 = low:32[R0] + +00000703: +00000709: #8 := R31 - 0x10 +0000070f: mem := mem with [#8, el]:u64 <- R29 +00000715: mem := mem with [#8 + 8, el]:u64 <- R30 +00000719: R31 := #8 +0000071f: R29 := R31 +00000724: R30 := 0x6E8 +00000726: call @call_weak_fn with return %00000728 + +00000728: +0000072d: R29 := mem[R31, el]:u64 +00000732: R30 := mem[R31 + 8, el]:u64 +00000736: R31 := R31 + 0x10 +0000073b: call R30 with noreturn + +000007f1: sub _start(_start_result) +0000083a: _start_result :: out u32 = low:32[R0] + +00000355: +0000035a: R29 := 0 +0000035f: R30 := 0 +00000365: R5 := R0 +0000036c: R1 := mem[R31, el]:u64 +00000372: R2 := R31 + 8 +00000378: R6 := R31 +0000037d: R0 := 0x1F000 +00000384: R0 := mem[R0 + 0xFD8, el]:u64 +00000389: R3 := 0 +0000038e: R4 := 0 +00000393: R30 := 0x8B0 +00000396: call @__libc_start_main with return %00000398 + +00000398: +0000039b: R30 := 0x8B4 +0000039e: call @abort with return %00000829 + +00000829: +0000082a: call @call_weak_fn with noreturn + +000007f4: sub abort() + + +0000039c: +000006a9: R16 := 0x20000 +000006b0: R17 := mem[R16 + 0x38, el]:u64 +000006b6: R16 := R16 + 0x38 +000006bb: call R17 with noreturn + +000007f5: sub call_weak_fn(call_weak_fn_result) +0000083b: call_weak_fn_result :: out u32 = low:32[R0] + +000003a0: +000003a3: R0 := 0x1F000 +000003aa: R0 := mem[R0 + 0xFD0, el]:u64 +000003b0: when R0 = 0 goto %000003ae +0000082b: goto %0000050d + +000003ae: +000003b6: call R30 with noreturn + +0000050d: +00000510: goto @__gmon_start__ + +0000050e: +00000693: R16 := 0x20000 +0000069a: R17 := mem[R16 + 0x30, el]:u64 +000006a0: R16 := R16 + 0x30 +000006a5: call R17 with noreturn + +000007f7: sub deregister_tm_clones(deregister_tm_clones_result) +0000083c: deregister_tm_clones_result :: out u32 = low:32[R0] + +000003bc: +000003bf: R0 := 0x20000 +000003c5: R0 := R0 + 0x70 +000003ca: R1 := 0x20000 +000003d0: R1 := R1 + 0x70 +000003d6: #4 := ~R0 +000003db: #5 := R1 + ~R0 +000003e1: VF := extend:65[#5 + 1] <> extend:65[R1] + extend:65[#4] + 1 +000003e7: CF := pad:65[#5 + 1] <> pad:65[R1] + pad:65[#4] + 1 +000003eb: ZF := #5 + 1 = 0 +000003ef: NF := 63:63[#5 + 1] +000003f5: when ZF goto %000003f3 +0000082c: goto %000004ef + +000004ef: +000004f2: R1 := 0x1F000 +000004f9: R1 := mem[R1 + 0xFC0, el]:u64 +000004fe: when R1 = 0 goto %000003f3 +0000082d: goto %00000502 + +000003f3: +000003fb: call R30 with noreturn + +00000502: +00000506: R16 := R1 +0000050b: call R16 with noreturn + +000007fa: sub frame_dummy(frame_dummy_result) +0000083d: frame_dummy_result :: out u32 = low:32[R0] + +00000492: +00000494: call @register_tm_clones with noreturn + +000007fb: sub free(free_ptr) +0000083e: free_ptr :: in out u64 = R0 + +00000306: +000006d5: R16 := 0x20000 +000006dc: R17 := mem[R16 + 0x48, el]:u64 +000006e2: R16 := R16 + 0x48 +000006e7: call R17 with noreturn + +000007fc: sub main(main_argc, main_argv, main_result) +0000083f: main_argc :: in u32 = low:32[R0] +00000840: main_argv :: in out u64 = R1 +00000841: main_result :: out u32 = low:32[R0] + +00000229: +0000022d: #1 := R31 - 0x30 +00000233: mem := mem with [#1, el]:u64 <- R29 +00000239: mem := mem with [#1 + 8, el]:u64 <- R30 +0000023d: R31 := #1 +00000242: R0 := 0xB +00000248: R29 := R31 +0000024e: #2 := R31 + 0x10 +00000254: mem := mem with [#2, el]:u64 <- R19 +0000025a: mem := mem with [#2 + 8, el]:u64 <- R20 +0000025f: R20 := 0x20000 +00000267: mem := mem with [R31 + 0x20, el]:u64 <- R21 +0000026c: R30 := 0x7DC +0000026f: call @malloc with return %00000271 + +00000271: +00000274: R21 := 0x20000 +0000027a: R21 := R21 + 0x60 +00000280: R19 := R0 +00000286: R0 := R21 +0000028e: mem := mem with [R20 + 0x78, el]:u64 <- R19 +00000293: R30 := 0x7F4 +00000296: call @strlen with return %00000298 + +00000298: +0000029c: R1 := R21 +000002a2: R2 := R0 +000002a8: R0 := R19 +000002ad: R30 := 0x804 +000002b0: call @memcpy with return %000002b2 + +000002b2: +000002b6: R0 := R19 +000002bb: R30 := 0x80C +000002be: call @puts with return %000002c0 + +000002c0: +000002c5: R0 := mem[R20 + 0x78, el]:u64 +000002cc: mem := mem with [R0 + 4] <- 0 +000002d3: R19 := mem[R20 + 0x78, el]:u64 +000002d9: R0 := R19 +000002de: R30 := 0x820 +000002e0: call @strlen with return %000002e2 + +000002e2: +000002e5: R1 := 1 +000002eb: R2 := R0 +000002f1: R0 := R19 +000002f6: R30 := 0x830 +000002f9: call @memset with return %000002fb + +000002fb: +00000300: R0 := mem[R20 + 0x78, el]:u64 +00000305: R30 := 0x838 +00000308: call @free with return %0000030a + +0000030a: +0000030e: #3 := R31 + 0x10 +00000313: R19 := mem[#3, el]:u64 +00000318: R20 := mem[#3 + 8, el]:u64 +0000031d: R0 := 0 +00000324: R21 := mem[R31 + 0x20, el]:u64 +0000032b: R29 := mem[R31, el]:u64 +00000330: R30 := mem[R31 + 8, el]:u64 +00000334: R31 := R31 + 0x30 +00000339: call R30 with noreturn + +000007fd: sub malloc(malloc_size, malloc_result) +00000842: malloc_size :: in u64 = R0 +00000843: malloc_result :: out u64 = R0 + +0000026d: +00000667: R16 := 0x20000 +0000066e: R17 := mem[R16 + 0x20, el]:u64 +00000674: R16 := R16 + 0x20 +00000679: call R17 with noreturn + +000007fe: sub memcpy(memcpy_dst, memcpy_src, memcpy_n, memcpy_result) +00000844: memcpy_dst :: in out u64 = R0 +00000845: memcpy_src :: in out u64 = R1 +00000846: memcpy_n :: in u64 = R2 +00000847: memcpy_result :: out u64 = R0 + +000002ae: +0000060f: R16 := 0x20000 +00000616: R17 := mem[R16, el]:u64 +0000061c: R16 := R16 +00000621: call R17 with noreturn + +000007ff: sub memset(memset_buf, memset_c, memset_n, memset_result) +00000848: memset_buf :: in out u64 = R0 +00000849: memset_c :: in u32 = low:32[R1] +0000084a: memset_n :: in u64 = R2 +0000084b: memset_result :: out u64 = R0 + +000002f7: +0000067d: R16 := 0x20000 +00000684: R17 := mem[R16 + 0x28, el]:u64 +0000068a: R16 := R16 + 0x28 +0000068f: call R17 with noreturn + +00000800: sub puts(puts_s, puts_result) +0000084c: puts_s :: in u64 = R0 +0000084d: puts_result :: out u32 = low:32[R0] + +000002bc: +000006bf: R16 := 0x20000 +000006c6: R17 := mem[R16 + 0x40, el]:u64 +000006cc: R16 := R16 + 0x40 +000006d1: call R17 with noreturn + +00000801: sub register_tm_clones(register_tm_clones_result) +0000084e: register_tm_clones_result :: out u32 = low:32[R0] + +000003fd: +00000400: R0 := 0x20000 +00000406: R0 := R0 + 0x70 +0000040b: R1 := 0x20000 +00000411: R1 := R1 + 0x70 +00000418: R1 := R1 + ~R0 + 1 +0000041e: R2 := 0.63:63[R1] +00000425: R1 := R2 + (R1 ~>> 3) +0000042b: R1 := extend:64[63:1[R1]] +00000431: when R1 = 0 goto %0000042f +0000082e: goto %000004d1 + +000004d1: +000004d4: R2 := 0x1F000 +000004db: R2 := mem[R2 + 0xFE0, el]:u64 +000004e0: when R2 = 0 goto %0000042f +0000082f: goto %000004e4 + +0000042f: +00000437: call R30 with noreturn + +000004e4: +000004e8: R16 := R2 +000004ed: call R16 with noreturn + +00000804: sub strlen(strlen_s, strlen_result) +0000084f: strlen_s :: in u64 = R0 +00000850: strlen_result :: out u64 = R0 + +00000294: +00000625: R16 := 0x20000 +0000062c: R17 := mem[R16 + 8, el]:u64 +00000632: R16 := R16 + 8 +00000637: call R17 with noreturn diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected new file mode 100644 index 000000000..a05348e17 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.expected @@ -0,0 +1,826 @@ +var {:extern} Gamma_R0: bool; +var {:extern} Gamma_R1: bool; +var {:extern} Gamma_R16: bool; +var {:extern} Gamma_R17: bool; +var {:extern} Gamma_R19: bool; +var {:extern} Gamma_R2: bool; +var {:extern} Gamma_R20: bool; +var {:extern} Gamma_R21: bool; +var {:extern} Gamma_R29: bool; +var {:extern} Gamma_R30: bool; +var {:extern} Gamma_R31: bool; +var {:extern} Gamma_malloc_base: [bv64]bool; +var {:extern} Gamma_malloc_count: [bv64]bool; +var {:extern} Gamma_malloc_end: [bv64]bool; +var {:extern} Gamma_mem: [bv64]bool; +var {:extern} Gamma_stack: [bv64]bool; +var {:extern} R0: bv64; +var {:extern} R1: bv64; +var {:extern} R16: bv64; +var {:extern} R17: bv64; +var {:extern} R19: bv64; +var {:extern} R2: bv64; +var {:extern} R20: bv64; +var {:extern} R21: bv64; +var {:extern} R29: bv64; +var {:extern} R30: bv64; +var {:extern} R31: bv64; +var {:extern} malloc_base: [bv64]bv8; +var {:extern} malloc_count: [bv64]bv8; +var {:extern} malloc_end: [bv64]bv8; +var {:extern} mem: [bv64]bv8; +var {:extern} stack: [bv64]bv8; +const {:extern} $buf_addr: bv64; +axiom ($buf_addr == 131192bv64); +const {:extern} $password_addr: bv64; +axiom ($password_addr == 131179bv64); +const {:extern} $stext_addr: bv64; +axiom ($stext_addr == 131168bv64); +function {:extern} L(memory: [bv64]bv8, index: bv64) returns (bool) { + false +} + +function {:extern} {:bvbuiltin "bvadd"} bvadd64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvsub"} bvsub64(bv64, bv64) returns (bv64); +function {:extern} {:bvbuiltin "bvuge"} bvuge64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvugt"} bvugt64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvule"} bvule64(bv64, bv64) returns (bool); +function {:extern} {:bvbuiltin "bvult"} bvult64(bv64, bv64) returns (bool); +function {:extern} gamma_load32(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))) +} + +function {:extern} gamma_load64(gammaMap: [bv64]bool, index: bv64) returns (bool) { + (gammaMap[bvadd64(index, 7bv64)] && (gammaMap[bvadd64(index, 6bv64)] && (gammaMap[bvadd64(index, 5bv64)] && (gammaMap[bvadd64(index, 4bv64)] && (gammaMap[bvadd64(index, 3bv64)] && (gammaMap[bvadd64(index, 2bv64)] && (gammaMap[bvadd64(index, 1bv64)] && gammaMap[index]))))))) +} + +function {:extern} gamma_load8(gammaMap: [bv64]bool, index: bv64) returns (bool) { + gammaMap[index] +} + +function {:extern} gamma_store64(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + gammaMap[index := value][bvadd64(index, 1bv64) := value][bvadd64(index, 2bv64) := value][bvadd64(index, 3bv64) := value][bvadd64(index, 4bv64) := value][bvadd64(index, 5bv64) := value][bvadd64(index, 6bv64) := value][bvadd64(index, 7bv64) := value] +} + +function {:extern} gamma_store8(gammaMap: [bv64]bool, index: bv64, value: bool) returns ([bv64]bool) { + gammaMap[index := value] +} + +function {:extern} memory_load64_le(memory: [bv64]bv8, index: bv64) returns (bv64) { + (memory[bvadd64(index, 7bv64)] ++ (memory[bvadd64(index, 6bv64)] ++ (memory[bvadd64(index, 5bv64)] ++ (memory[bvadd64(index, 4bv64)] ++ (memory[bvadd64(index, 3bv64)] ++ (memory[bvadd64(index, 2bv64)] ++ (memory[bvadd64(index, 1bv64)] ++ memory[index]))))))) +} + +function {:extern} memory_load8_le(memory: [bv64]bv8, index: bv64) returns (bv8) { + memory[index] +} + +function {:extern} memory_store64_le(memory: [bv64]bv8, index: bv64, value: bv64) returns ([bv64]bv8) { + memory[index := value[8:0]][bvadd64(index, 1bv64) := value[16:8]][bvadd64(index, 2bv64) := value[24:16]][bvadd64(index, 3bv64) := value[32:24]][bvadd64(index, 4bv64) := value[40:32]][bvadd64(index, 5bv64) := value[48:40]][bvadd64(index, 6bv64) := value[56:48]][bvadd64(index, 7bv64) := value[64:56]] +} + +function {:extern} memory_store8_le(memory: [bv64]bv8, index: bv64, value: bv8) returns ([bv64]bv8) { + memory[index := value[8:0]] +} + +procedure {:extern} rely(); + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure {:extern} rely_transitive() + modifies Gamma_mem, mem; + ensures (mem == old(mem)); + ensures (Gamma_mem == old(Gamma_mem)); +{ + call rely(); + call rely(); +} + +procedure {:extern} rely_reflexive(); + +procedure {:extern} guarantee_reflexive(); + modifies Gamma_mem, mem; + +procedure #free(); + modifies Gamma_R16, Gamma_R17, R16, R17; + requires (forall i : int, j: bv64 :: (malloc_base[i] == R0 && bvuge64(j, R0) && bvult64(j, malloc_end[i])) ==> Gamma_mem[j]); + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure main() + modifies Gamma_R0, Gamma_R1, Gamma_R16, Gamma_R17, Gamma_R19, Gamma_R2, Gamma_R20, Gamma_R21, Gamma_R29, Gamma_R30, Gamma_R31, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, Gamma_mem, Gamma_stack, R0, R1, R16, R17, R19, R2, R20, R21, R29, R30, R31, malloc_base, malloc_count, malloc_end, mem, stack; + requires (gamma_load8(Gamma_mem, $password_addr) == false); + requires malloc_count == 0; + requires gamma_load32(Gamma_mem, memory_load64_le(mem, $stext_addr)); + requires R31 == 100bv64; + free requires (memory_load8_le(mem, 131152bv64) == 0bv8); + free requires (memory_load8_le(mem, 131153bv64) == 0bv8); + free requires (memory_load8_le(mem, 131154bv64) == 0bv8); + free requires (memory_load8_le(mem, 131155bv64) == 0bv8); + free requires (memory_load8_le(mem, 131156bv64) == 0bv8); + free requires (memory_load8_le(mem, 131157bv64) == 0bv8); + free requires (memory_load8_le(mem, 131158bv64) == 0bv8); + free requires (memory_load8_le(mem, 131159bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free requires (memory_load8_le(mem, 131168bv64) == 117bv8); + free requires (memory_load8_le(mem, 131169bv64) == 115bv8); + free requires (memory_load8_le(mem, 131170bv64) == 101bv8); + free requires (memory_load8_le(mem, 131171bv64) == 114bv8); + free requires (memory_load8_le(mem, 131172bv64) == 58bv8); + free requires (memory_load8_le(mem, 131173bv64) == 112bv8); + free requires (memory_load8_le(mem, 131174bv64) == 97bv8); + free requires (memory_load8_le(mem, 131175bv64) == 115bv8); + free requires (memory_load8_le(mem, 131176bv64) == 115bv8); + free requires (memory_load8_le(mem, 131177bv64) == 0bv8); + free requires (memory_load8_le(mem, 131178bv64) == 0bv8); + free requires (memory_load8_le(mem, 131179bv64) == 7bv8); + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (Gamma_R19 == old(Gamma_R19)); + free ensures (Gamma_R20 == old(Gamma_R20)); + free ensures (Gamma_R21 == old(Gamma_R21)); + free ensures (Gamma_R29 == old(Gamma_R29)); + free ensures (Gamma_R31 == old(Gamma_R31)); + free ensures (R19 == old(R19)); + free ensures (R20 == old(R20)); + free ensures (R21 == old(R21)); + free ensures (R29 == old(R29)); + free ensures (R31 == old(R31)); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); +{ + var #1: bv64; + var #2: bv64; + var #3: bv64; + var Gamma_#1: bool; + var Gamma_#2: bool; + var Gamma_#3: bool; + lmain: + assume {:captureState "lmain"} true; + #1, Gamma_#1 := bvadd64(R31, 18446744073709551568bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #1, R29), gamma_store64(Gamma_stack, #1, Gamma_R29); + assume {:captureState "%00000233"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#1, 8bv64), R30), gamma_store64(Gamma_stack, bvadd64(#1, 8bv64), Gamma_R30); + assume {:captureState "%00000239"} true; + R31, Gamma_R31 := #1, Gamma_#1; + R0, Gamma_R0 := 11bv64, true; + R29, Gamma_R29 := R31, Gamma_R31; + #2, Gamma_#2 := bvadd64(R31, 16bv64), Gamma_R31; + stack, Gamma_stack := memory_store64_le(stack, #2, R19), gamma_store64(Gamma_stack, #2, Gamma_R19); + assume {:captureState "%00000254"} true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(#2, 8bv64), R20), gamma_store64(Gamma_stack, bvadd64(#2, 8bv64), Gamma_R20); + assume {:captureState "%0000025a"} true; + R20, Gamma_R20 := 131072bv64, true; + stack, Gamma_stack := memory_store64_le(stack, bvadd64(R31, 32bv64), R21), gamma_store64(Gamma_stack, bvadd64(R31, 32bv64), Gamma_R21); + assume {:captureState "%00000267"} true; + R30, Gamma_R30 := 2012bv64, true; + call malloc(); + goto l00000271; + l00000271: + assume {:captureState "l00000271"} true; + R21, Gamma_R21 := 131072bv64, true; + R21, Gamma_R21 := bvadd64(R21, 96bv64), Gamma_R21; + R19, Gamma_R19 := R0, Gamma_R0; + R0, Gamma_R0 := R21, Gamma_R21; + call rely(); + assert (L(mem, bvadd64(R20, 120bv64)) ==> Gamma_R19); + mem, Gamma_mem := memory_store64_le(mem, bvadd64(R20, 120bv64), R19), gamma_store64(Gamma_mem, bvadd64(R20, 120bv64), Gamma_R19); + assume {:captureState "%0000028e"} true; + R30, Gamma_R30 := 2036bv64, true; + call strlen(); + goto l00000298; + l00000298: + assume {:captureState "l00000298"} true; + R1, Gamma_R1 := R21, Gamma_R21; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2052bv64, true; + call memcpy(); + goto l000002b2; + l000002b2: + assume {:captureState "l000002b2"} true; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2060bv64, true; + call puts(); + goto l000002c0; + l000002c0: + assume {:captureState "l000002c0"} true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R20, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R20, 120bv64)) || L(mem, bvadd64(R20, 120bv64))); + call rely(); + assert (L(mem, bvadd64(R0, 4bv64)) ==> true); + mem, Gamma_mem := memory_store8_le(mem, bvadd64(R0, 4bv64), 0bv8), gamma_store8(Gamma_mem, bvadd64(R0, 4bv64), true); + assume {:captureState "%000002cc"} true; + call rely(); + R19, Gamma_R19 := memory_load64_le(mem, bvadd64(R20, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R20, 120bv64)) || L(mem, bvadd64(R20, 120bv64))); + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2080bv64, true; + call strlen(); + goto l000002e2; + l000002e2: + assume {:captureState "l000002e2"} true; + R1, Gamma_R1 := 1bv64, true; + R2, Gamma_R2 := R0, Gamma_R0; + R0, Gamma_R0 := R19, Gamma_R19; + R30, Gamma_R30 := 2096bv64, true; + call memset(); + goto l000002fb; + l000002fb: + assume {:captureState "l000002fb"} true; + call rely(); + R0, Gamma_R0 := memory_load64_le(mem, bvadd64(R20, 120bv64)), (gamma_load64(Gamma_mem, bvadd64(R20, 120bv64)) || L(mem, bvadd64(R20, 120bv64))); + R30, Gamma_R30 := 2104bv64, true; + call #free(); + goto l0000030a; + l0000030a: + assume {:captureState "l0000030a"} true; + #3, Gamma_#3 := bvadd64(R31, 16bv64), Gamma_R31; + R19, Gamma_R19 := memory_load64_le(stack, #3), gamma_load64(Gamma_stack, #3); + R20, Gamma_R20 := memory_load64_le(stack, bvadd64(#3, 8bv64)), gamma_load64(Gamma_stack, bvadd64(#3, 8bv64)); + R0, Gamma_R0 := 0bv64, true; + R21, Gamma_R21 := memory_load64_le(stack, bvadd64(R31, 32bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 32bv64)); + R29, Gamma_R29 := memory_load64_le(stack, R31), gamma_load64(Gamma_stack, R31); + R30, Gamma_R30 := memory_load64_le(stack, bvadd64(R31, 8bv64)), gamma_load64(Gamma_stack, bvadd64(R31, 8bv64)); + R31, Gamma_R31 := bvadd64(R31, 48bv64), Gamma_R31; + return; +} + +procedure malloc(); + modifies Gamma_R0, Gamma_R16, Gamma_R17, Gamma_malloc_base, Gamma_malloc_count, Gamma_malloc_end, R0, R16, R17, malloc_base, malloc_count, malloc_end; + requires bvugt64(R0, 0bv64); + requires Gamma_R0 == true; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures ((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)))); + ensures Gamma_R0 == true; + ensures malloc_count == old(malloc_count) + 1; + ensures bvugt64(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); + ensures (forall i : bv64 :: (bvuge64(i, R0) && bvult64(i, bvadd64(R0, old(R0)))) ==> (Gamma_mem[i] && gamma_load8(Gamma_mem, i))); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure memcpy(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures ((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)))); + ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i, bvadd64(R0, R2))) then gamma_load8((Gamma_mem), bvadd64(bvsub64(i, R0), R1)) else old(gamma_load8(Gamma_mem, i)))); + ensures (forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le((mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i)))); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure memset(); + modifies Gamma_R16, Gamma_R17, Gamma_mem, R16, R17, mem; + requires Gamma_R1; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures ((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)))); + ensures (forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then Gamma_R1 else old(gamma_load8(Gamma_mem, i)))); + 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)))); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure puts(); + modifies Gamma_R16, Gamma_R17, R16, R17; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); + +procedure strlen(); + modifies Gamma_R0, Gamma_R16, Gamma_R17, R0, R16, R17; + free requires (memory_load8_le(mem, 2472bv64) == 1bv8); + free requires (memory_load8_le(mem, 2473bv64) == 0bv8); + free requires (memory_load8_le(mem, 2474bv64) == 2bv8); + free requires (memory_load8_le(mem, 2475bv64) == 0bv8); + free requires (memory_load8_le(mem, 130504bv64) == 144bv8); + free requires (memory_load8_le(mem, 130505bv64) == 9bv8); + free requires (memory_load8_le(mem, 130506bv64) == 0bv8); + free requires (memory_load8_le(mem, 130507bv64) == 0bv8); + free requires (memory_load8_le(mem, 130508bv64) == 0bv8); + free requires (memory_load8_le(mem, 130509bv64) == 0bv8); + free requires (memory_load8_le(mem, 130510bv64) == 0bv8); + free requires (memory_load8_le(mem, 130511bv64) == 0bv8); + free requires (memory_load8_le(mem, 130512bv64) == 64bv8); + free requires (memory_load8_le(mem, 130513bv64) == 9bv8); + free requires (memory_load8_le(mem, 130514bv64) == 0bv8); + free requires (memory_load8_le(mem, 130515bv64) == 0bv8); + free requires (memory_load8_le(mem, 130516bv64) == 0bv8); + free requires (memory_load8_le(mem, 130517bv64) == 0bv8); + free requires (memory_load8_le(mem, 130518bv64) == 0bv8); + free requires (memory_load8_le(mem, 130519bv64) == 0bv8); + free requires (memory_load8_le(mem, 131032bv64) == 192bv8); + free requires (memory_load8_le(mem, 131033bv64) == 7bv8); + free requires (memory_load8_le(mem, 131034bv64) == 0bv8); + free requires (memory_load8_le(mem, 131035bv64) == 0bv8); + free requires (memory_load8_le(mem, 131036bv64) == 0bv8); + free requires (memory_load8_le(mem, 131037bv64) == 0bv8); + free requires (memory_load8_le(mem, 131038bv64) == 0bv8); + free requires (memory_load8_le(mem, 131039bv64) == 0bv8); + free requires (memory_load8_le(mem, 131160bv64) == 88bv8); + free requires (memory_load8_le(mem, 131161bv64) == 0bv8); + free requires (memory_load8_le(mem, 131162bv64) == 2bv8); + free requires (memory_load8_le(mem, 131163bv64) == 0bv8); + free requires (memory_load8_le(mem, 131164bv64) == 0bv8); + free requires (memory_load8_le(mem, 131165bv64) == 0bv8); + free requires (memory_load8_le(mem, 131166bv64) == 0bv8); + free requires (memory_load8_le(mem, 131167bv64) == 0bv8); + ensures (((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)))) && (memory_load8_le(mem, $stext_addr) == old(memory_load8_le(mem, $stext_addr)))); + 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 (bvult64(old(R0), bvadd64(bvadd64(old(R0), R0), 1bv64))); + free ensures (memory_load8_le(mem, 2472bv64) == 1bv8); + free ensures (memory_load8_le(mem, 2473bv64) == 0bv8); + free ensures (memory_load8_le(mem, 2474bv64) == 2bv8); + free ensures (memory_load8_le(mem, 2475bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130504bv64) == 144bv8); + free ensures (memory_load8_le(mem, 130505bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130506bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130507bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130508bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130509bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130510bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130511bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130512bv64) == 64bv8); + free ensures (memory_load8_le(mem, 130513bv64) == 9bv8); + free ensures (memory_load8_le(mem, 130514bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130515bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130516bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130517bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130518bv64) == 0bv8); + free ensures (memory_load8_le(mem, 130519bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131032bv64) == 192bv8); + free ensures (memory_load8_le(mem, 131033bv64) == 7bv8); + free ensures (memory_load8_le(mem, 131034bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131035bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131036bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131037bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131038bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131039bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131160bv64) == 88bv8); + free ensures (memory_load8_le(mem, 131161bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131162bv64) == 2bv8); + free ensures (memory_load8_le(mem, 131163bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131164bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131165bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131166bv64) == 0bv8); + free ensures (memory_load8_le(mem, 131167bv64) == 0bv8); diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.relf b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.relf new file mode 100644 index 000000000..52360c68e --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/gcc_O2/malloc_memcpy_strlen_memset_free.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 990 +000000000001fdd0 0000000000000403 R_AARCH64_RELATIVE 940 +000000000001ffd8 0000000000000403 R_AARCH64_RELATIVE 7c0 +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: 0000000000000994 0 SECTION LOCAL DEFAULT 14 .fini + 15: 00000000000009a8 0 SECTION LOCAL DEFAULT 15 .rodata + 16: 00000000000009ac 0 SECTION LOCAL DEFAULT 16 .eh_frame_hdr + 17: 00000000000009e8 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: 0000000000020070 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: 0000000000000880 0 NOTYPE LOCAL DEFAULT 13 $x + 30: 00000000000009fc 0 NOTYPE LOCAL DEFAULT 17 $d + 31: 00000000000009a8 0 NOTYPE LOCAL DEFAULT 15 $d + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS crti.o + 33: 00000000000008b4 0 NOTYPE LOCAL DEFAULT 13 $x + 34: 00000000000008b4 20 FUNC LOCAL DEFAULT 13 call_weak_fn + 35: 00000000000006d8 0 NOTYPE LOCAL DEFAULT 11 $x + 36: 0000000000000994 0 NOTYPE LOCAL DEFAULT 14 $x + 37: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtn.o + 38: 00000000000006e8 0 NOTYPE LOCAL DEFAULT 11 $x + 39: 00000000000009a0 0 NOTYPE LOCAL DEFAULT 14 $x + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS malloc_memcpy_strlen_memset_free.c + 41: 00000000000007c0 0 NOTYPE LOCAL DEFAULT 13 $x + 42: 0000000000020060 0 NOTYPE LOCAL DEFAULT 23 $d + 43: 0000000000020078 0 NOTYPE LOCAL DEFAULT 24 $d + 44: 0000000000000a70 0 NOTYPE LOCAL DEFAULT 17 $d + 45: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 46: 00000000000008d0 0 NOTYPE LOCAL DEFAULT 13 $x + 47: 00000000000008d0 0 FUNC LOCAL DEFAULT 13 deregister_tm_clones + 48: 0000000000000900 0 FUNC LOCAL DEFAULT 13 register_tm_clones + 49: 0000000000020058 0 NOTYPE LOCAL DEFAULT 23 $d + 50: 0000000000000940 0 FUNC LOCAL DEFAULT 13 __do_global_dtors_aux + 51: 0000000000020070 1 OBJECT LOCAL DEFAULT 24 completed.0 + 52: 000000000001fdd0 0 NOTYPE LOCAL DEFAULT 19 $d + 53: 000000000001fdd0 0 OBJECT LOCAL DEFAULT 19 __do_global_dtors_aux_fini_array_entry + 54: 0000000000000990 0 FUNC LOCAL DEFAULT 13 frame_dummy + 55: 000000000001fdc8 0 NOTYPE LOCAL DEFAULT 18 $d + 56: 000000000001fdc8 0 OBJECT LOCAL DEFAULT 18 __frame_dummy_init_array_entry + 57: 0000000000000a10 0 NOTYPE LOCAL DEFAULT 17 $d + 58: 0000000000020070 0 NOTYPE LOCAL DEFAULT 24 $d + 59: 0000000000000000 0 FILE LOCAL DEFAULT ABS crtstuff.c + 60: 0000000000000a98 0 NOTYPE LOCAL DEFAULT 17 $d + 61: 0000000000000a98 0 OBJECT LOCAL DEFAULT 17 __FRAME_END__ + 62: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 63: 000000000001fdd8 0 OBJECT LOCAL DEFAULT ABS _DYNAMIC + 64: 00000000000009ac 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: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start__ + 73: 0000000000000000 0 FUNC WEAK DEFAULT UND __cxa_finalize@GLIBC_2.17 + 74: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _bss_end__ + 75: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 23 _edata + 76: 0000000000000994 0 FUNC GLOBAL HIDDEN 14 _fini + 77: 0000000000020080 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: 000000000002006b 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: 00000000000009a8 4 OBJECT GLOBAL DEFAULT 15 _IO_stdin_used + 86: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 + 87: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 _end + 88: 0000000000000000 0 FUNC GLOBAL DEFAULT UND free@GLIBC_2.17 + 89: 0000000000000880 52 FUNC GLOBAL DEFAULT 13 _start + 90: 0000000000020078 8 OBJECT GLOBAL DEFAULT 24 buf + 91: 0000000000020080 0 NOTYPE GLOBAL DEFAULT 24 __end__ + 92: 0000000000020060 11 OBJECT GLOBAL DEFAULT 23 stext + 93: 000000000002006c 0 NOTYPE GLOBAL DEFAULT 24 __bss_start + 94: 00000000000007c0 140 FUNC GLOBAL DEFAULT 13 main + 95: 0000000000020070 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/src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c b/src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c new file mode 100644 index 000000000..8ebe2183e --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.c @@ -0,0 +1,29 @@ +#include +#include +#include + +char *buf; +char password = 7; // secret value; has to be a variable so that we get a Gamma_password variable +char stext[11] = "user:pass"; + +int main() { + char *pos = NULL, *dom = NULL; + + //memset(stext, 'h', 10); + // stext[5] = password; + buf = malloc(11); + // it only verifies if memcpy is the WHOLE string + memcpy(buf, stext, strlen(stext)); // inlined by -O2 + + puts(buf); + + // find the split between username and password ("username:password") + pos = buf + 4; + + // including this makes verification fail + *pos = 0; + + memset(buf, 1, strlen(buf)); + free(buf); // requires secret[i] == true +} + diff --git a/src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec b/src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec new file mode 100644 index 000000000..afda57a99 --- /dev/null +++ b/src/test/incorrect/malloc_memcpy_strlen_memset_free/malloc_memcpy_strlen_memset_free.spec @@ -0,0 +1,74 @@ +Globals: +password: char +buf: long +stext: char[11] + + +DIRECT functions: gamma_load64, gamma_load8, memory_load8_le, bvult64, bvule64, bvsub64, gamma_load32, bvuge64, bvugt64 + +Subroutine: #free + Requires DIRECT: "(forall i : int, j: bv64 :: (malloc_base[i] == R0 && bvuge64(j, R0) && bvult64(j, malloc_end[i])) ==> Gamma_mem[j])" + +Subroutine: main +Requires DIRECT: "malloc_count == 0" +Requires: Gamma_password == false +Requires DIRECT: "gamma_load32(Gamma_mem, memory_load64_le(mem, $stext_addr))" +Requires DIRECT: "R31 == 100bv64" + +Subroutine: malloc +Modifies: R0, malloc_base, malloc_count, malloc_end +Requires DIRECT: "bvugt64(R0, 0bv64)" +Requires DIRECT: "Gamma_R0 == true" +Ensures: buf == old(buf) && password == old(password) +Ensures DIRECT: "Gamma_R0 == true" +Ensures DIRECT: "malloc_count == old(malloc_count) + 1" +Ensures DIRECT: "bvugt64(malloc_end[malloc_count], malloc_base[malloc_count])" +Ensures DIRECT: "R0 == malloc_base[malloc_count]" +Ensures DIRECT: "malloc_end[malloc_count] == bvadd64(R0, old(R0))" +Ensures DIRECT: "(forall i: int :: i != malloc_count ==> bvugt64(malloc_base[malloc_count], malloc_end[i]) || bvult64(malloc_end[malloc_count], malloc_base[i]))" +Ensures DIRECT: "(forall i: int :: i != malloc_count ==> malloc_base[i] == old(malloc_base[i]) && malloc_end[i] == old(malloc_end[i]))" +Ensures DIRECT: "bvuge64(R0, 100000000bv64)" +// uninitialised memory is low (free ensures since not part of modifies) +Ensures DIRECT: "(forall i : bv64 :: (bvuge64(i, R0) && bvult64(i, bvadd64(R0, old(R0)))) ==> (Gamma_mem[i] && gamma_load8(Gamma_mem, i)))" + +Subroutine: memcpy + Modifies: mem + // don't overlap (doesnt verify with lambdas) + // Requires DIRECT: "bvugt64(R0, bvadd64(R1, R2)) || bvugt64(R1, bvadd64(R0, R2))" + // don't wrap around (doesnt verify with lambdas) + // Requires DIRECT: "bvugt64(bvadd64(R0, R2), R0) && bvugt64(bvadd64(R1, R2), R1)" + Ensures: buf == old(buf) && password == old(password) + + Ensures DIRECT: "(forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i, bvadd64(R0, R2))) then gamma_load8((Gamma_mem), bvadd64(bvsub64(i, R0), R1)) else old(gamma_load8(Gamma_mem, i))))" + Ensures DIRECT: "(forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then memory_load8_le((mem), bvadd64(bvsub64(i, R0), R1)) else old(memory_load8_le(mem, i))))" +// Ensures DIRECT: "(forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then old(Gamma_mem)[bvadd64(bvsub64(i, R0), R1)] else old(Gamma_mem[i])))" +// Ensures DIRECT: "(forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then old(mem)[bvadd64(bvsub64(i, R0), R1)] else old(mem[i])))" + // outside bounds gets old value + // Ensures DIRECT: "(forall i: bv64 :: {:trigger mem[i]} ((bvult64(i, R0) && bvuge64(bvadd64(R0, R2), i)) ==> (mem[i] == old(memory_load8_le(mem, i)) && Gamma_mem[i] == old(gamma_load8(Gamma_mem, i)))))" + +// forall i <= n, Gamma_mem[R0] low +Subroutine: memset + Modifies: mem + Requires DIRECT: "Gamma_R1" + Ensures: buf == old(buf) && password == old(password) + Ensures DIRECT: "(forall i: bv64 :: (Gamma_mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then Gamma_R1 else old(gamma_load8(Gamma_mem, i))))" + // seems to be the same +// Ensures DIRECT: "(forall i: bv64 :: (mem[i] == if (bvule64(R0, i) && bvult64(i,bvadd64(R0, R2))) then R1[8:0] else old(mem[i])))" + 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))))" + + + +Subroutine: strlen + Modifies: R0 +// Requires DIRECT: "(exists i: bv64, j: bv64 :: {:trigger mem[i], memory_store64_le(mem, i, j)} (bvuge64(i, R0) && (mem[i] == 0bv8)))" + Ensures: buf == old(buf) && password == old(password) && stext==old(stext) + Ensures DIRECT: "Gamma_R0 == true" + Ensures DIRECT: "(forall i: bv64 :: (bvule64(old(R0), i)) && (bvult64(i, bvadd64(old(R0), R0))) ==> mem[i] != 0bv8)" +// Ensures DIRECT: "(mem[bvadd64(old(R0), R0)] == 0bv8)" +// Ensures DIRECT: "(bvule64(old(R0), bvadd64(old(R0), R0)))" +// Ensures DIRECT: "(bvult64(old(R0), bvadd64(bvadd64(old(R0), R0), 1bv64)))" +Ensures DIRECT: "(memory_load8_le(mem, bvadd64(old(R0), R0)) == 0bv8)" +Ensures DIRECT: "(bvult64(old(R0), bvadd64(bvadd64(old(R0), R0), 1bv64)))" + + + diff --git a/src/test/incorrect/nestedifglobal/config.mk b/src/test/incorrect/nestedifglobal/config.mk new file mode 100644 index 000000000..3f32e9400 --- /dev/null +++ b/src/test/incorrect/nestedifglobal/config.mk @@ -0,0 +1 @@ +ENABLED_COMPILERS ?= clang clang_pic clang_no_plt_no_pic gcc gcc_no_plt_no_pic gcc_pic diff --git a/src/test/make/clang.mk b/src/test/make/clang.mk new file mode 100644 index 000000000..c6174bb84 --- /dev/null +++ b/src/test/make/clang.mk @@ -0,0 +1,3 @@ +CC=$(CLANG) +CFLAGS += +include $(GIT_ROOT)/src/test/make/lift.mk diff --git a/src/test/make/clang_O2.mk b/src/test/make/clang_O2.mk new file mode 100644 index 000000000..fd5e39827 --- /dev/null +++ b/src/test/make/clang_O2.mk @@ -0,0 +1,3 @@ +CC=$(CLANG) +CFLAGS += -O2 +include $(GIT_ROOT)/src/test/make/lift.mk diff --git a/src/test/make/clang_no_plt_no_pic.mk b/src/test/make/clang_no_plt_no_pic.mk new file mode 100644 index 000000000..cdec016f9 --- /dev/null +++ b/src/test/make/clang_no_plt_no_pic.mk @@ -0,0 +1,3 @@ +CC=$(CLANG) +CFLAGS += -fno-plt -fno-pic +include $(GIT_ROOT)/src/test/make/lift.mk diff --git a/src/test/make/clang_pic.mk b/src/test/make/clang_pic.mk new file mode 100644 index 000000000..860454d2f --- /dev/null +++ b/src/test/make/clang_pic.mk @@ -0,0 +1,3 @@ +CC=$(CLANG) +CFLAGS += -fPIC +include $(GIT_ROOT)/src/test/make/lift.mk diff --git a/src/test/make/gcc.mk b/src/test/make/gcc.mk new file mode 100644 index 000000000..4f9fdeaae --- /dev/null +++ b/src/test/make/gcc.mk @@ -0,0 +1,2 @@ +CC=$(GCC) +include $(GIT_ROOT)/src/test/make/lift.mk diff --git a/src/test/make/gcc_O2.mk b/src/test/make/gcc_O2.mk new file mode 100644 index 000000000..72f49363f --- /dev/null +++ b/src/test/make/gcc_O2.mk @@ -0,0 +1,3 @@ +CC=$(GCC) +CFLAGS += -O2 +include $(GIT_ROOT)/src/test/make/lift.mk diff --git a/src/test/make/gcc_no_plt_no_pic.mk b/src/test/make/gcc_no_plt_no_pic.mk new file mode 100644 index 000000000..a90c47be5 --- /dev/null +++ b/src/test/make/gcc_no_plt_no_pic.mk @@ -0,0 +1,3 @@ +CC=$(GCC) +CFLAGS += -fno-plt -fno-pic +include $(GIT_ROOT)/src/test/make/lift.mk diff --git a/src/test/make/gcc_pic.mk b/src/test/make/gcc_pic.mk new file mode 100644 index 000000000..b107b722d --- /dev/null +++ b/src/test/make/gcc_pic.mk @@ -0,0 +1,3 @@ +CC=$(GCC) +CFLAGS += -fpic +include $(GIT_ROOT)/src/test/make/lift.mk diff --git a/src/test/make/lift-directories.mk b/src/test/make/lift-directories.mk new file mode 100644 index 000000000..0a7d2e718 --- /dev/null +++ b/src/test/make/lift-directories.mk @@ -0,0 +1,41 @@ +.EXPORT_ALL_VARIABLES: + +# Run from the directory basil/src/test/*/test_case/ + +# - means continue if it doesnt exist +-include ./config.mk + +NAME=$(notdir $(shell pwd)) +GIT_ROOT?=$(realpath ../../../../) + +GCC ?= aarch64-linux-gnu-gcc +CLANG ?= clang-15 -target $(TARGET) +CC ?= $(GCC) +#CFLAGS=-fno-pic -fno-plt +TARGET=aarch64-linux-gnu + +BAP?=bap +READELF ?= aarch64-linux-gnu-readelf +BASIL=$(GIT_ROOT)/target/scala-3.3.1/wptool-boogie-assembly-0.0.1.jar + +C_SOURCE ?=$(realpath $(wildcard *.c)) +SPEC ?=$(realpath $(wildcard *.spec)) +EXTRA_SPEC ?=$(realpath $(wildcard *.bpl)) +BASIL_FLAGS ?= +#BOOGIE_FLAGS=/proverOpt:O:smt.array.extensional=false +BOOGIE_FLAGS ?= /useArrayAxioms + +LIFT_ARTEFACTS=$(NAME).adt $(NAME).bir $(NAME).relf + +ENABLED_COMPILERS ?= clang clang_O2 clang_pic clang_no_plt_no_pic gcc gcc_O2 gcc_no_plt_no_pic gcc_pic + +TARGETS := all verify clean cleanall cleanlift recompile +.PHONY : $(TARGETS) $(ENABLED_COMPILERS) + +$(TARGETS): $(ENABLED_COMPILERS) + +$(ENABLED_COMPILERS): + mkdir -p $@/ + # - continue if fails + -$(MAKE) -C $(realpath $@) -f $(GIT_ROOT)/src/test/make/$@.mk $(MAKECMDGOALS) + diff --git a/src/test/make/lift.mk b/src/test/make/lift.mk new file mode 100644 index 000000000..cf1044268 --- /dev/null +++ b/src/test/make/lift.mk @@ -0,0 +1,49 @@ + +# Run from the directory basil/src/test/*/test_case/compilation_variant/ + +$(LIFT_ARTEFACTS): a.out + $(BAP) a.out -d adt:$(NAME).adt -d bir:$(NAME).bir + $(READELF) -s -r -W a.out > $(NAME).relf + + +ifdef $(SPEC) +BASIL_SPECARG = --spec $(SPEC) +endif + +# optional; create basil +$(NAME).bpl: $(LIFT_ARTEFACTS) $(SPEC) $(BASIL) + java -jar $(BASIL) $(BASIL_FLAGS) --adt $(NAME).adt --relf $(NAME).relf -o $(NAME).bpl $(BASIL_SPECARG) + +.PHONY=$(BASIL) +$(BASIL): + cd $(GIT_ROOT) && sbt assembly + +# don't re-lift only if binary is missing +.SECONDARY: a.out +a.out: $(C_SOURCE) + $(CC) $(CFLAGS) $(C_SOURCE) + +.PHONY=recompile verify clean cleanlift cleanall cleanbin +verify: $(NAME)_result.txt + +recompile: a.out + +$(NAME)_result.txt: $(NAME).bpl $(EXTRA_SPEC) + bash -c "time boogie $(NAME).bpl $(EXTRA_SPEC) $(BOOGIE_FLAGS) | tee $(NAME)_result.txt" + +cleanall: clean cleanlift cleanbin cleantest + +cleantest: + rm -rf $(NAME).bpl + rm -rf $(NAME)_result.txt + +cleanbin: + rm -rf a.out + +clean: cleanlift cleanbin + +cleanlift: + rm -rf $(NAME).adt + rm -rf $(NAME).bir + rm -rf $(NAME).relf + diff --git a/src/test/readme.md b/src/test/readme.md new file mode 100644 index 000000000..ba037609a --- /dev/null +++ b/src/test/readme.md @@ -0,0 +1,30 @@ + +Options specified in make/lift-directories.mk can be overriden using this file, for example to specify the lifting templates: + +``` +$ cat correct/test_name/config.mk +ENABLED_COMPILERS = clang clang_pic gcc gcc_pic +``` + + +To force recompile and lift all: + +``` +make cleanall +make +``` + +Lift one: + +``` + # relative to correct/secret_write +make -C correct/secret_write -f ../../make/lift-directories.mk +``` + +or + +``` +cd correct/secret_write +make -f ../../make/lift-directories.mk +``` + diff --git a/src/test/scala/SystemTests.scala b/src/test/scala/SystemTests.scala index 8525be73b..7a5079c7f 100644 --- a/src/test/scala/SystemTests.scala +++ b/src/test/scala/SystemTests.scala @@ -33,7 +33,7 @@ class SystemTests extends AnyFunSuite { val path = correctPath + "/" + p val variations = getSubdirectories(path) variations.foreach(t => - test(p + "/" + t) { + test("correct/" + p + "/" + t) { runTest(correctPath, p, t, true) } ) @@ -43,7 +43,7 @@ class SystemTests extends AnyFunSuite { val path = incorrectPath + "/" + p val variations = getSubdirectories(path) variations.foreach(t => - test(p + "/" + t) { + test("incorrect/" + p + "/" + t) { runTest(incorrectPath, p, t, false) } ) @@ -78,29 +78,35 @@ class SystemTests extends AnyFunSuite { val variationPath = directoryPath + variation + "/" + name val specPath = directoryPath + name + ".spec" val outPath = variationPath + ".bpl" - val ADTPath = variationPath + ".adt" + val ADTPath = variationPath + ".adt" val RELFPath = variationPath + ".relf" Logger.info(outPath) val timer = PerformanceTimer(s"test $name/$variation") - if (File(specPath).exists) { - Main.main(Array("--adt", ADTPath, "--relf", RELFPath, "--spec", specPath, "--output", outPath)) - } else { - Main.main(Array("--adt", ADTPath, "--relf", RELFPath, "--output", outPath)) - } + + val args = mutable.ArrayBuffer("--adt", ADTPath, "--relf", RELFPath, "--output", outPath) + if (File(specPath).exists) args ++= Seq("--spec", specPath) + + Main.main(args.toArray) val translateTime = timer.checkPoint("translate-boogie") Logger.info(outPath + " done") - val boogieResult = Seq("boogie", "/timeLimit:10", "/printVerifiedProceduresCount:0", "/useArrayAxioms", outPath).!! + val extraSpec = List.from(File(directoryPath).listFiles()).map(_.toString).filter(_.endsWith(".bpl")).filterNot(_.endsWith(outPath)) + val boogieResult = (Seq("boogie", "/timeLimit:10", "/printVerifiedProceduresCount:0", "/useArrayAxioms", outPath) ++ extraSpec).!! val verifyTime = timer.checkPoint("verify") val resultPath = variationPath + "_result.txt" log(boogieResult, resultPath) val verified = boogieResult.strip().equals("Boogie program verifier finished with 0 errors") + val proveFailed = boogieResult.contains("could not be proved") val timedOut = boogieResult.strip() contains "timed out" - val failureMsg = (verified, shouldVerify, timedOut) match { - case (_, _, true) => "SMT solver timed out: unknown result" - case (true, false, false) => "Expected verification failure, but got success." - case (false, true, false) => "Expected verification success, but got failure." - case (_, _, false) => "Test passed" + def xor(x: Boolean, y:Boolean): Boolean = (x || y) && ! (x && y) + + val failureMsg = if timedOut then "SMT Solver timed out" else + (verified, shouldVerify, xor(verified, proveFailed)) match { + case (true, true, true) => "Test passed" + case (false , false, true) => "Test passed" + case (_, _, false) => "Prover error: unknown result" + case (true, false, true) => "Expected verification failure, but got success." + case (false, true, true) => "Expected verification success, but got failure." } val expectedOutPath = variationPath + ".expected" @@ -114,7 +120,7 @@ class SystemTests extends AnyFunSuite { } else { info("Note: this test has not previously succeeded") } - val passed = !timedOut && (verified == shouldVerify) + val passed = !timedOut && (verified == shouldVerify) && (xor(verified , proveFailed)) val result = TestResult(passed, verified, shouldVerify, hasExpected, timedOut, matchesExpected, translateTime, verifyTime) testResults.append((s"$name/$variation", result)) if (!passed) fail(failureMsg)